Vagabond, I am happy you are still alive!
We ran into similar issues with PyOP2 while backporting it to WinXP. We were able to get C++20 to work, surprisingly. :P
Regarding /permissive- , in MSVC C++20 there were a couple major changes.
For OP2 missions, the most annoying thing was non const correctness in the OP2 SDK, like
class BuildingGroup { void Setup(LOCATION& mine, LOCATION& smelter, MAP_RECT& smelterArea) }
In a lot of mission code, people would write Setup({32, 32}, {64, 64}, ...)
That's not allowed in nonpermissive mode anymore, since "mine"/"smelter"/etc are non-const reference params. Unfortunately due to export name mangling, you can't just change the SDK header defs to add "const" or else Windows import symbol names can break. That's partly why I started making TethysAPI.
There were also major changes to how the C preprocessor works in MSVC nonpermissive mode, but I don't think that affected OP2 missions much.
If you have build error logs, we'd be happy to look through them!