Windows 9 was a free upgrade (announced about two weeks ago) for all Windows users from XP onward. It was an effort by Microsoft to get everyone to abandon XP and Vista. Unfortunately, saner heads in the bean counting Department of Microsoft somehow became aware of the announcement and within hours quashed the release. [Said with tongue firmly implanted in cheek – the original announcement was more of a rumor, not an official announcement and while I can blame bean counters for many things, having saner heads is not one of them!]
Windows 9 would have caused problems in legacy systems which were built for the windows 95+ systems as they often had code with looked for “windows 9…”.
So that was the first and best reason. Then Microsoft used it to announce that moving to 10 would really bring home the message that this wasn’t a simple upgrade from 8 but a whole new “experience”.
Nope, the Windows version is returned by the Win32 API as two integral numbers (DWORD), one for the “major version” and one for the “minor version”, not as a string. Furthermore, the actual version (as opposed to the marketing name) of Windows 95 is 4.0. Windows 98 is 4.10, ME is 4.90 and the next Windows (“Windows 10”) will be 6.4. Last but not least, there is a flag that clearly indicates whether we are running on a “9x-based” or “NT-based” system.
So, there is no chance for confusing Windows 9x with a possible Windows 9 (*).
Of course a programmer could do very stupid things, like reading the Windows “Product Name” as a string from the Registry (a string that is intended for purely informational purposes) and then try to guess the windows version from that string, like you implied. But it’s simply impossible to add workarounds for every screwed up application that might exist out there, so that’s probably not the reason why they called it Windows 10
(*) except that, starting with Windows 8.1, the version API now returns a “fake” version and always claims to be Windows 8.0 - unless the binary contains a specific “compatibility” manifest)