Output list from each line of metabox (shortcode)

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!