The Windows C/C++ API returns a structure with version numbers [1], same with the C# one [2]. Other languages just wrap the native C API call, GetVersionEx.
The most troubled framework is Java: because of some strange design decision, you can only get the version as a string (see [3]), and that makes impressively easy for programmers to screw up version checks. However, as other commenters have said, those apps could run on compatibility mode and Windows would solve the issue itself instead of completely changing an operating system's name.
1: http://msdn.microsoft.com/en-us/library/windows/desktop/ms72... 2: http://msdn.microsoft.com/en-us/library/system.environment.o... 3: http://stackoverflow.com/questions/228477/how-do-i-programma...
Or they could rename the entire OS.
So I don't buy this rumor at all. The number of real applications that 1) remember Windows 9x exist, 2) aren't completely broken on modern Windows anyway, and 3) go out of their way to use some convoluted version checking method has to be extremely small.
Remember Windows 95? That was 19 years ago!
It's easy to imagine someone like you in 1995 proclaiming there would not be a Windows 2015, or anything close to that.
Nothing has fundamentally changed, Internet and all. Even tablets, smartphones and multitouch interfaces are still basically the same old thing.
IPv4 address space seemed plenty enough.
640 k should be enough.
So that's why they went with 10 - it makes sense now.