Unset some WooCommerce checkout billing fields and One Page Checkout plugin

Solution:

To remove billing first name and last name without any issues in checkout page, try to use the following instead:

// 1. Make required fields optional
add_filter( 'woocommerce_default_address_fields', 'customize_default_address_checkout_fields', 1000 );
function customize_default_address_checkout_fields( $fields ) {
    if( is_checkout() ) {
        $fields['first_name']['required'] = $fields['last_name']['required'] = false;
    }
    return $fields;
}

// 2. Remove unneeded billing fields
add_filter( 'woocommerce_billing_fields', 'customize_billing_checkout_fields', 1000 );
function customize_billing_checkout_fields( $fields ) {
    if( is_checkout() ) {
        unset($fields['billing_first_name'], $fields['billing_last_name']);
    }
    return $fields;
}

Code goes in functions.php file of the active child theme (or active theme). Tested and works…

It should works with One Page Checkout plugin too.