Send email to author of the post when the custom post status changes to published

This should work — make sure to change my_custom_type to the correct CPT slug:

add_action( 'transition_post_status', 'notify_author_on_publish', 10, 3 );
function notify_author_on_publish( $new_status, $old_status, $post ) {
    if ( 'publish' !== $new_status ||
        $new_status === $old_status ||
        'my_custom_type' !== get_post_type( $post ) ) {
        return;
    }

    // Get the post author data.
    if ( ! $user = get_userdata( $post->post_author ) ) {
        return;
    }

    // Compose the email message.
    $body = sprintf( 'Hey %s, your awesome post has been published!
    See <%s>',
        esc_html( $user->display_name ),
        get_permalink( $post )
    );

    // Now send to the post author.
    wp_mail( $user->user_email, 'Your post published!', $body );
}