wouldn't it be great for the programmer who made that mistake to get a message stating that using that function requires Windows version xxxx or higher ?
Only, if we knew beforehand that the programmer wanted to support older versions.
Its simply weighing the 2 case against each other.
- The benefit for the case you describe
- The harm to everyone else, who also gets the new warning.
It would be ok, if there was an option "Check if my code is compatible with ..." => but that would not be part of the compilation. Probably would not need to be part of the compiler either.
Besides, adding those warnings might for some cause a flood of warnings, hiding other issues from them. And "well you can turn it off" is not an argument in this case.
I consider this a feature that should require explicit turning on. ("consider" = My opinion, not an argument for debate)
Your concern about getting a message that causes you to speak French can already happen using "deprecated". It is as unlikely to happen with an equivalent as it does with what's already available. You can be fairly confident you won't be practicing your French very often for that reason 
Not remotely the same. All my statements above are about what would/should be for indented use-cases. Non of my concerns is about abuse of any of those features.
If I get a deprecated message, I assume that the item will be removed in future, and I need to deal with it. (sure some deprecated feature lived a long time already, but still, they may come to an end).
If I would get a "requires win11" message, I would equally consider that to be the truth.
The difference is, that when I use TSomeClass.GonnaBeOutdated, it may not be outdated now, when I write the code. So I have no chance at this time to check and know this. I need to get the info when this will change.
When I use VirtualAlloc2 then I can check it at the time of using it. And its not likely to disappear from older Windows versions. (And if it did, how would the compiler know which update I target....)