get_posts displaying wrong permalink for “continue reading” link

You need to reset the post data after your get_posts loop since your calling setup_postdata. It would be better to remove the setup_postdata all together.

global $post;
$recent_posts = get_posts( $yourargshere );
    foreach($recent_posts as $post) : 
        $return = '<h4 class="recent-post-title c0">' . $post->post_title . '</h4>'; 
        $return .= '<p class="recent-content c0">' . apply_filters( 'the_excerpt', $post->post_excerpt ) . '</p>';
    return $return;
    endforeach;

You also need to change your add_filter to the_excerpt instead of get_the_excerpt