From my experience developing C++ on it, as long as you don't use anything exotic, everything is portable (i.e. just recompile).
On the other hand, for the missing apps and other stuff, I'm running a Linux VM via VMWare Fusion Pro. It works efficiently, and interoperability is good. Just add another internal network card to the VM, and keep an always on SSH/SFTP connection. Then everything works seamlessly.
Never had any problems for 7 or so years when developing that application and writing my Ph.D. in the process.
From my experience developing C++ on it, 99+% of everything is portable, but the ~1% that isn't, causes a disproportionate amount of annoyances and extra work. We still have a program that we have to run in an x86 docker container (with all the problems that brings), just to get it to work on our M1 Macs.
The being said, the M1 Pro is a more than good enough piece of hardware that I'm willing to put up with this.
From my experience, the newest VMWare versions and Linux kernels are very good at conserving power when the VM is mostly idle.
I'm doing on that my 2014MBP, and it didn't cut the endurance to half, but need to re-test it for exact numbers. However, it doesn't appear in "power hungry applications" list unless you continuously compile something or run some service at 100% CPU load. Also, you can limit the resources it can use if you want to further limit it down.
On the other hand, for the missing apps and other stuff, I'm running a Linux VM via VMWare Fusion Pro. It works efficiently, and interoperability is good. Just add another internal network card to the VM, and keep an always on SSH/SFTP connection. Then everything works seamlessly.
Never had any problems for 7 or so years when developing that application and writing my Ph.D. in the process.