Undefined index for default custom theme option

You could make sure the index is defined before accessing it in header.php, and fallback gracefully:

<?php
$theme_option = flagship_sub_get_global_options();
if ( array_key_exists( 'flagship_sub_shield', $theme_option ) ) {
    $shield = $theme_option['flagship_sub_shield'];
} else {
    $shield = 'option1'; // Default value
}

if ('option2' === $shield): 

  //Image Option #2

elseif ('option3' === $shield): 
   //Image Option #3

else: 
  //Image Option #1
endif; ?>

Another possibly better option – to avoid having to include this check everytime you are getting a setting from $theme_option – would be to review your flagship_sub_get_global_options() function and make sure it returns an array that includes every setting, including default values for those settings that are not saved in the database yet.