Only the originals are stored. Transcoding is needed to play any video in browsers, e.g. HEVC isn't supported by most browsers. For this, Memories transcodes your video on the fly and streams it to the browser with HLS. RAW support for photos is easy and already supported, no idea about videos.
As far as "beating" Apple, I'm ready to bet that'll never happen (not just with this project but any really). A small open source project can't really compete with a $2T company
As such, Nextcloud doesn't really lock you in; it just provides a framework for the app. You can, theoretically, continue to use Syncthing to sync files while running Nextcloud on top of it (probably not ideal though)
I want to note though, the "no lock-in" philosophy refers more to being able to move out of Nextcloud/Memories at any point if you want. Nextcloud still just stores everything on your disk as folders and files, so you can just decide to nuke it one day and still have everything (not fully true yet, you'll still lose some things like tags and albums; exporting these out too is WIP)
HDR kinda works, depends on the photo. Live photos are fully supported (Apple/Google/Samsung/Xiaomi at least). HDR videos are a pain to transcode, it mostly doesn't work well (but this is not very well tested / worked on). No idea about the spatial stuff.
Folders: this is fully supported. You can share out links of folders that anyone can upload to etc. These get stored in that folder (in your account) then.
Albums: partial support. You can share links to albums that are viewable or share albums with others with an account on your nextcloud instance. People who have an account can upload photos to the shared albums.
See the demo above. It runs on a free-tier VM from Oracle.
Minimum requirements are quite low. Mainly you need memory to get good performance (at least 4GB, say). CPU-wise it runs fine with massive libraries even on RPi.
I don't recommend S3 as external storage though; the Nextcloud implementation is quite finicky. Unless you can mount that and use it inside docker, that would work fine.
In this case I was rather annoyed since the original comment was very offensively worded and the person obviously had zero intention of helping out. Their only goal was to stroke their own ego by shouting out how something they couldn't get to work is crap.
This is part of the reason for open source maintainer burnout -- useless comments about how something is broken with zero intention of helping to fix it. Hey, it's free -- if you don't like it then either help, or stop crying and move on to something else.