Do New_to_publish hooks work for custom post types

I think you’re using wrong hooks. Please take a look at wp_transition_post_status function, you’ll see the correct hooks:

function wp_transition_post_status($new_status, $old_status, $post) {
    do_action('transition_post_status', $new_status, $old_status, $post);
    do_action("{$old_status}_to_{$new_status}", $post);
    do_action("{$new_status}_{$post->post_type}", $post->ID, $post);
}

So, in your code, you should use hooks:

'new_to_publish'   
'draft_to_publish'
'pending_to_publish'

and in your function, you have to check your post type.