Is it possible to play minecraft with a single account on different platforms (mac, windows and Linux) without purchasing again on each platform.
These 3 platforms all support Java Edition. Download and install the appropriate binaries for given platform, enter your login details in the launcher and play. Only one can be logged in at a time, but there's no limit to how many installs on any supported systems you can have.
If yes, is the game progress synced if I switch between platforms.
The single-player worlds are always bound to a single installation, so there's no syncing of any kind there. What you can do instead, is play on-line, on a server (even self-hosted) and any progress is kept on that server, the only thing kept on the client is player's details.
Which specific version supports the above and any other purchase recommendations with respect to gameplay, realms, user experience, etc.
That depends on how serious you get. For regular single-player gameplay (with local world not shared with any installations) - no extra purchase required whatsoever, just buy the basic game, install as many copies as you wish, enter login details in the launcher and play any of them at any time. It won't even enforce the "one at a time" restriction for single-player gameplay.
If you want to play on a server, you'll need a server, and all the install to be the same release - e.g. you can't play with 1.16.3 client on a 1.16.2 server; this is a matter of configuration - installing the right version through the launcher.
As for the server, you have a lot of options
- you can purchase a Realm, and keep it running for a modest monthly fee, playing from any installation and inviting a couple friends if you want. The big downside is you stop playing, you lose your Realm, and all you've built in it.
- you can play on any public server. Check their rules, because you'll be interacting with the community, and the servers of just regular survival gameplay are relatively few among variety of minigame-servers, anarchy, competitive economy and so on (plus the shame of community pay-to-win servers, a.k.a. scams where you need to buy extra stuff to be able to make a progression).
- you can host your own, on your own computer. If you have a public IP, or all computers connecting are on the same LAN, you can run the server on any of them (...although I haven't seen anyone seriously run a server out of a Mac), and connect from any other computer to its address.
- you can host your own, on a dedicated server. There are free ones, that are rather seriously limited in diskspace and run clones of Minecraft (Spigot, Paper etc), that don't follow the vanilla mechanics exactly, meaning the basic experience is the same but once you get into fancy technical builds, they'll malfunction. Or you can pay a provider for a dedicated server and run whatever you wish there. Some learning of server administration is required.
- Client open LAN. This is the easiest to set up but also quite expensive - in this case you do need two accounts, and two purchases of Java Edition. Start a regular single-player world on one, and pick 'Open to LAN' from main menu. At that point you can connect to it from any matching version install on the same LAN and connect to it with the other account.
In your situation probably hosting your own on your own computer is the best option, as it bears no other costs and gives you full power and all options. It doesn't have to be a separate computer - you can connect with the game client to a server running on the same box, but it holds the world files locally, so all installs will have to connect to the same server to play on the same world. There is no 'cloud sync' of any kind for these, unless you roll your own.