WinModems use the CPU of the host machine to perform much of the processing involved in modulating and demodulating the data signals. To do this, the modem must interact closely with the operating system, and each chip manufacturer has their own protocols for doing so. Most WinModems don't run under Linux as the manufacturers will not release the technical details to enable OS coders to write their own driver. The modems themselves are ususally only supplied with Windows drivers.
Some WinModems do run under Linux, where the manufacturer has released the specification, or where a lot of hard work has been done to reverse engineer the processes.
"Hardware" modems perform the modulation and demodulation themselves. External modems are all "hardware" modems, and there are many internal hardware modems (usually ISA ones). Hardware modems are usually much more expensive that WinModems, for example £50 compared to £20. However, they are much easier to get working under Linux.