This is assuming each of the fields is a single value and you want to create a list for display…
add_action('edit_post','custom_combine_fields');
function custom_combine_fields($post_id) {
$pirates = get_post_meta($post_id,'pirates',true);
$robots = get_post_meta($post_id,'robots',true);
$ninjas = get_post_meta($post_id,'ninjas',true);
$professions = array();
if ($pirates) {$professions[] = $pirates;}
if ($robots) {$professions[] = $robots;}
if ($ninjas) {$professions[] = $ninjas;}
if (count($professions) > 0) {
$professions = implode(', ',$professions);
update_post_meta($post_id,'professions',$professions);
}
}
I don’t see much great advantage to doing this on save rather than in a display template but if you really want to that should do it.