It's my understanding that the reason "Windows 9" was skipped was technical, not marketing.
I read (I think on HN) that lazy programmers would test whether the environment was Windows 95 through 98 by only checking for "Win9" or something similar, rather than a list of strings. Thus, if Microsoft released an actual "Win9," many programs would think they were running on Windows 95.
To name and shame at least one example, such code was included in some versions of the Java Development Kit itself and could be found in easy Google code searches at least at the time Microsoft skipped Windows 9.
Microsoft and Apple and others also prefer to skip 9 for the international marketing reason that 9 is a very evil number by superstition in most of Asia, like how some of the west believes 13 to be unlucky and things like elevators tend to skip 13 in the US/Europe.
I read (I think on HN) that lazy programmers would test whether the environment was Windows 95 through 98 by only checking for "Win9" or something similar, rather than a list of strings. Thus, if Microsoft released an actual "Win9," many programs would think they were running on Windows 95.