There are thousands of programs for Linux… but you should be warned that relatively few programs run natively on both Windows and Linux. In some cases there are ways to run “Windows programs” on Linux, but in general such successes are special cases. If you absolutely must have Windows you can run it in a virtual machine… but you will most likely be happiest with Linux if you aren’t chasing after such things.
I use Windows for work because our IT department only supports that… but I use cygwin and wsl to get a smidgen of my familiar Linux tools that I use on my personal computers.
When you come across some Python code for something written 5 years ago and they used four contributed packages that the programmers have changed the API on three times since then, you want to set up a virtual environment that contains those specific versions so you can at least see how it worked at that time. A small part of this headache comes from Python itself mutating, but the bulk of the problem is the imported user-contributed packages that multiply the functionality of Python.
To be sure, it would be nice if those programmers were all dedicated to updating their code, but with hundreds of thousands of packages that could be imported written by volunteers, you can’t afford to expect all of them them to stop innovating or even to continue maintaining past projects for your benefit.
If you have the itch to fix something old so it works in the latest versions of everything, you have that option… but it is really hard to do that if you cannot see it working as it was designed to work when it was built.