Loop through a specific parent category

You need to get the ID of the regions category and then use get_categories() to get all categories that have that ID as their parent:

$parent = get_category_by_slug( 'regions' );

$regions = get_categories( array(
    'parent' => $parent->term_id,
) );

foreach ( $regions as $region ) {
    // Do stuff.
}

Have you considered just creating a “Regions” custom taxonomy for your post type though? It’s a little unusual having categories work like this. It’s fragile too since it depends on a category having a specific name.

If you did that, and set the taxonomy name as region, you’d loop through them like so:

$regions = get_terms( array( 'taxonomy' => 'region' ) );

foreach ( $regions as $region ) {
    // Do stuff.
}