WordPress Custom Post Type – Post Attribute: Template. Template shows up and saves on the back end, but the default theme file is being rendered

in your code:

$labels = array(
    'name' => _x( 'Locations', 'info_locaiton' ),
    'singular_name' => _x( 'Location', 'info_location' )
);

use this:

$labels = array(
    'name' => _x( 'Locations', 'info_location' ),
    'singular_name' => _x( 'Location', 'info_location' )
);

In $labels variable name array value has different slug. I think this can be a problem.
So, you can correct it and check. Or you can use custom post type plugin to make custom post type easily.

Hope this will help!