In short: What filesystem of these should I go with today if I want to have the best and easiest user experience?
Generally btrfs is friendlier to use but bugs and failures are messier — I haven't had btrfs blow up badly in years but I'd make a backup schedule and stick to it anyway. I have a btrbk job fire and sync my latest snapshots off my work laptop whenever I plug in my external backup drive, I'd recommend something similar if you value your data and time.
I don't tend to do anything very interesting to tax the filesystem so it is most important that things just work day to day and the less maintenance the better. I found a few use cases[0] for the copy-on-write abilities of Btrfs (built into systemd-nspawn) after switching but even that was a case where something I was previously doing was made instantly faster rather than working out a btrfs incantation.
I've recently been trying out a nifty backup tool[1] to try out a snapshot feature locally. This one did require two btrfs specific commands to restore a backup (`btrfs {send,receive}`). Once again though, this was an additional feature I decided to try out and not really required for my day to day. For me personally Btrfs has been easy to adopt because of how low-friction it has been to add and learn incrementally.
I've still not learned ZFS.
[0]: https://idle.nprescott.com/2022/systemd-nspawn-and-btrfs.htm...
The only limitation is that deduplication requires too much ram and cpu, and is therefore almost useless. Otherwise, I highlight recommended ZFS.
Btrfs doesn’t have native encryption, that’s already not good.