Yeah, it takes a bit to get used to, but it is awesome to use.
But, to answer your questions, the blueprints is correct. I believe I used this when I was learning about blueprints.
As for the template file, you would want it nested under mytheme/templates/gallery.html.twig
And the only reason I have the nested loop is I couldn't find a way to grab the data without it. I think it has to do with the structure of how Grav saves the content. It ends up looking like this when you use the file field for your images.
imageField:
/path/to/file.jpg:
name: file.jpg
type: image/jpeg
size: 4048
path: path/to/file.jpg
so I tried
{% for imageListItem in page.header.imageList %}
<img src='{{ imageListItem[0].path }}' />
{% endfor %}
and
{% for imageListItem in page.header.imageList %}
<img src='{{ imageListItem }}' />
{% endfor %}
but no luck.
Maybe someone at Grav can comment on getting around that?