Certainly they are not the same file, but the OS is not at fault here. The OS (well, technically, the Windows filesystem) properly keeps track of the full filename -- it is the Windows desktop user interface that is at fault by hiding information.
Right. It's a single stack of software sold as an OS. If the extension is used as a concealed file type by one part (desktop) then the name is effectively that, and it's a bug to allow more than one the same.
I'm not saying that Windows should actually be modified to prevent this. I'm just pointing out the illogicalities that using file extensions as file types gives.
BTW, as a rif on your suggestion, EPOC32 (that because Symbian) had an interesting angle. FIle types were given by file system extensions "recognisers" that could tell file types by arbitrary means. So they could look at file contents (generally the first sector of a file) or file name. So you could look for an HTML header say, Indeed most file types have recognisable headers within them. For example I did a Gameboy emulator, and I wrote a recogniser to go with it that recognised Gameboy games by the string "(C)Nintendo" which was always at a particular offset in the file. Which my colleague found rather amusing.
In a lesser way, *nix tells the types of executables by examining the first part of the content. e.g #!/usr/bin/python