Custom Admin Email Subject for Woocommerce (3.8.0) Orders

The break is in the wrong place. When you put a break; in a loop (foreach), it quits the loop right at that point. You have your break before you set the $subject value so you’re quitting the loop before the $subject is set.
Set the subject, then break.

Also, your code snippet is missing the add_filter() call that triggers this filter function. This needs to be hooked to woocommerce_email_subject_new_order, the same as in the examples you linked to.

add_filter('woocommerce_email_subject_new_order', 'custom_admin_email_subject', 1, 2);    
function custom_admin_email_subject( $subject, $order ) {
    global $woocommerce;
    foreach($order->get_items() as $item_id => $item ){
        if ( has_term( 'Category 1 Name', 'product_cat' , $item->get_product_id() ) ) { 
            $subject = sprintf( 'Category 1 Email Subject Line' );
            break;
        }
    } 
    return $subject;
}