All that is true. Concerning specific hardware one important reason is that hardware manufacturers use to create specifc hardware drivers and softwares for Windows and never for Linux; this is typically the case with mices, keyboards, game controllers, digital cameras, etc. It can be noticed however that some hardware drivers tend to appear for Linux, I used successfully a driver from nVidia for management of monitors under GNU/Linux (Ubuntu for me). And during the acquisition of my new digital camera last week I was not surprised to see the specific software furnished runs only under Windows and MacOS, so I have to search a specific Linux software for that.