I don't see anything really new here.
How could $ can even be OS related? No offence, I have had similar problems once with VARTYPE() to be fixed by using TYPE() instead in VFP6/7, I do believe you actually had the problem, therefore, but it can't be OS related, $ just like TYPE() and VARTYPE() have nothing to do with the OS, VFP doesn't use any OS API functions for these VFP operators and functions, so there can't be an OS dependency.
OS() itself has no parameters in VFP6, but in later versions offers better OS version details. Nevertheless,even the VFP imaging blog had an article on that:
https://vfpimaging.blogspot.com/2021/04/getting-correct-windows-version-os.html
There are more options, like a WMI query of Win32_OperatingSystem.
That you don't directly detect file existance in VFP has been a problem discovered using PACK since Windows Vista, which you therefore better replace with code copying the data into a cursor, ZAP the DBF and APPEND from DBF("cursorname") or more safe options using a backup and temp table DBF file (safe against power outage). Anything creating files by a second process also is treated best by waiting for the file and maybe up to the point you can fopen it with write permission.
Windows default printer automatic change feature I think I know since Win10.
Network card and switch not negotiating the best transfer rate is a network thing and was always a problem, if it's misconfigured, outsie of any OS or VFP dependency. If you have a problem there it's more likely due to a new and not optimized erver than due to clients.
Then within the network performance there's the opportunistic locks problem that can come back with client/server changes, as you lose the registry entries controlling the damage and forget to reapply them. Or even need a new set of reg keys. Maybe that's due now or soon.
BSD, well, that's surely OS and Hardware. Long time no see, for me. I take it from here Win11 needs large RAM. No big surprise to me, though I had the impression MS was rolling back on Hardware demands also for graphics, because of the change from Aero to flat design, too.
So the only thing I consider a new problem in recent times was default printer and the general field problem under Win10. Whereas avoiding general fields was recommended since at least the times of Win XP, it's always a bad idea for images, you would therefore only need it for other OLE objects like RTF Text, I think there's a well known way to use RTF in VFP reports with a general field and olebound, i.e. olecontrol within a report. There's the only need and only terporary need for general fields for things like that in reports. And that was a bummer within Win10, as it didn't even worked for that temporary usage. The core problem usually was that ole servers are not the same across Windows versions, if you used general fields to persist data and then use it on a new OS, but that was recommended against for very long, already. Up to Win11 you never had this problem within the same client using general fields for OLE objects locally and termporarily, though.
The default printer doesn't bite you, if you go bya the well known mehanism of installing a printer driver with a dedicated name, also to manage differrent configurations, different paper trays to use, for example, and the SET PRINTER TO NAME knownname instead of using the default printer.