I believe you can do it using the save_post hook, than do a conditional check for the post’s post-type and the value of its post meta.
add_action( 'save_post', 'do_some_function');
function do_some_function($post_id) {
global $post;
$post_type_as_taxonomy = array('cpt-1','cpt-2'); // this is your hooked custom post types
$post = get_post( $post_id );
if(in_array($post->post_type, $post_type_as_taxonomy) && $post->post_status=='publish'){ // check if the post is hooked & published
$my_meta = get_post_meta($post_id, 'my-meta', true); // check if it has a post meta with the ket 'my-meta'
if($my_meta){
// do your hook function here
}
}
}