What hook should be used to programmatically create a post only when master post is updated?

you can use pre_post_update action hook like so:

add_action('pre_post_update','post_updating_callback');
function post_updating_callback($post_id){
    global $post;
    // verify if this is an auto save routine. 
    // If it is our form has not been submitted, so we dont want to do anything
    if ( defined( 'DOING_AUTOSAVE' ) && DOING_AUTOSAVE ) 
      return;
    if ($post->post_status == "publish"){
        //do update stuff here.
    }
}

Update:

instead of wp_insert_post() use wp_update_post like this:

//first get the original post
$postarr = get_post($post_id,'ARRAY_A');

//then set the fields you want to update
$postarr['post_title'] = "new title";
$postarr['post_content'] = "new edited content";

$post_id = wp_update_post($postarr);

this way you only need to specify the fields that were updated and never worry about stuff like what was the original post type.