Hey Armin, thanks a lot for the detailed explanation, that makes sense from a performance perspective.
The website is https://www.francescocostantino.it, and the specific page I'm concerned about is:
https://www.francescocostantino.it/francesco-costantino-artista-contemporaneo/
To answer your question: only one image is indexed.
But here's why I don't think this is just "Google being selective about which images it indexes": I ran the page through Google's Rich Results Test (which uses the same rendering engine as Googlebot), and in the rendered screenshot only 1 image out of dozens in the gallery actually shows up, the rest stay as blank/placeholder. You can see it here:
https://search.google.com/test/rich-results/result?id=xXK7lCrVXxZVIHqsarDoMg
That's a different thing than "Google chose not to index some images": it looks like during headless rendering, the src/data-src swap simply isn't completing for most images on the page, not just a curation choice on Google's side after successfully seeing them.
So my question is: is there something about how/when the JS swap fires (scroll event, IntersectionObserver, container size calculation via getBoundingClientRect, etc.) that could fail to trigger during a headless render where there's no real user scrolling? That would explain why the rendered screenshot shows almost nothing, even though on a real browser with a real user everything loads fine.