You missed $output in “for” loop, wrong $project(s) name.
add_shortcode( 'cv', 'vp_cv' );
function vp_cv( $atts, $content = null ) {
//.....
while( $query->have_posts() ) : $query->the_post();
$title = get_the_title();
$projects = get_post_meta($post->ID, 'resume_projects', true);
if( $projects ) $projects = explode("\n", $projects);
$output .= '<p class="cv-title">' . $title . '</p>';
$output .= '<p class="cv-projects">';
$output .= '<ol>';
for( $i = 0; $i < sizeof( $projects ); $i++ ) {
$output .= '<li>' . $projects[$i] .'</li>';
}
$output .= "</ol>";
$output .= "</p>";
//.....
return $output;
Hope it helps!