How to create a field in customize and show that in header.php?

add_action( 'customize_register', 'theme_customize_register' );


/**
 * Register individual settings through customizer's API.
 *
 * @param WP_Customize_Manager $wp_customize Customizer reference.
 */
function theme_customize_register( $wp_customize ) {

    // You can first start by adding a section
    
    $wp_customize->add_section(
        'theme_options',
        array(
            'title'       => __( 'Title of your section', 'domain' ),
            'capability'  => 'edit_theme_options',
            'description' => __( 'Some description', 'domain' ),
            'priority'    => 160,
        )
    );
    $wp_customize->add_setting(
        'field_name',
        array(
            'type'              => 'textarea',
            'sanitize_callback' => 'theme_sanitize_text', // You can sanitize the text afterwards through this function
            'capability'        => 'edit_theme_options',
        )
    );

}

In the API docs you can find also what other fields you can use and how you can modify them.

In order to access your settings you can use

get_theme_mod('field_name');

Make sure to add this to a plugin or child theme.