This all depends on what you’re actually saving in your post meta. If you’re actually saving the ID you could create a secondary query on your single-post_type.php
page.
<?php if( have_posts() ) : ?>
<?php while( have_posts() ) :
the_post();
$cpt2_meta = get_post_meta( $post->ID, '_meta_name', true ); // Get out Post Type 2 Meta
?>
<?php the_content(); ?>
<?php endwhile; ?>
<?php endif; ?>
<?php if( ! empty( $cpt2_meta ) ) :
$cpt2_posts = new WP_Query( array(
'post_type' => 'cpt2_slug',
'posts_per_page' => -1,
) );
if( $cpt2_posts->have_posts() ) :
?>
<?php while( $cpt2_posts->have_posts() ) : $cpt2_posts->the_post(); ?>
<h1><?php the_title(); ?></h1>
<?php endwhile;?>
<?php endif; ?>
<?php endif; ?>
First we get the Post Meta ( category ) then we run a secondary query on that “category”. Again, this may change depending on what you’re saving as your post meta. For more information you can read into WP_Query.