There are a few reasons for them to skip Windows 9, and go straight to 10.
The most dominate, is probably the “lazy coder theory”;
If you’re not code literate, allow me to explain. An easy (and lazy, and bad) way to check what version of Windows a user is running is to just read in the first little bit of the name the operating system is using to identify itself. There are better ways to do it, but if that first bit reads “Windows 9” it means the operating system has to be either Windows 95 or Windows 98.
Unless of course there’s a Windows 9.
It’s a y2k sort of problem, where programmers either didn’t think the Windows naming scheme could ever generate another “Windows 9x” version, or didn’t want to bother future-proofing their code to control for it. And while it’s just an unsubstantiated theory that this is why the name is Windows 10, the problem this coder brings up is verifiably a common shortcut. We’ve reached out to Microsoft for comment, but we may never really know. What’s for sure though is that this name just happens to solve one big, obnoxious problem.
(It’s not just programs, drivers did it, api’s, etc.)
Another theory;
It could also be point releases from the NT kernel
Kernel version 3.1 = NT 3.1
Kernel version 3.5 = NT 3.5
Kernel version 4.0 = NT 4.0
Kernel version 5.0 = Windows 2000
Kernel version 5.1 = Windows XP
Kernel version 6.0 = Windows Vista
Kernel version 6.1 = Windows 7
Kernel version 6.2 = Windows 8
Kernel version 6.3 = Windows 8.1
Kernel version 6.4 = Windows 10 and is the 10th NT kernel release.