Don’t get me wrong. I love Linux and FOSS. I have been using and installing distros on my own since I was 12. Now that I’m working in tech-related positions, after the Reddit migration happened, etc. I recovered my interest in all the Linux environment. I use Ubuntu as my main operating system in my Desktop, but I always end up feeling very limited. There’s always software I can’t use properly (and not just Windows stuff), some stuff badly configured with weird error messages… last time I was not able to even use the apt command. Sometimes I lack time and energy for troubleshooting and sometimes I just fail at it.
I usually end up in need of redoing a fresh install until it breaks up again. Maybe Linux is not good for beginners working full time? Maybe we should do something like that Cisco course that teaches you the basic commands?
Both are similar, and the very short version is they are sandboxed applications that bundle their own dependencies and can update out of band with your distro’s software repository. With Flatpaks they can share a common runtime environment, but I think with Snaps they bundle everything into the snap (I might be wrong about this).
One key difference is that Snap is basically only on Ubuntu, and Snaps can also bundle CLI applications or server software. Flatpaks are currently really meant for desktop applications.
In both cases you can modify the permissions of the the programs they bundle sort of like how you might expect on iOS or Android. That is to say you can restrict their access to the file system, the network, or other things. So, as an example, I can run a proprietary program as a Flatpak but ensure it cannot access my Bluetooth if for some reason I feel that need.
To expand on why snaps are Ubuntu only is because the back end for snap distribution is proprietary.