I think I covered it quite eloquently in reply #2 ....
Indeed, you boast your lack of knowledge with admirable pride. I find it characteristic for certain kind of people - they always blurt out the "right" answer as a dogma and they consider arguing it is below them - after all, "it's clear" to "us", isn't it?
Now back to the original question.
Is Linux a viable substitute for Windows? Is there enough software?
Well, it strongly depends on what type of user you are. What do you want to do, what your objectives are.
Do you just want to read mail, browse, play movies and occassional game? Then it's quite sufficient, you may be required to install a few extra codecs, but many distros will give you the option during the installation. Speaking of installation, distros like Ubuntu or Suse have completely GUI based, graphical installation process, you don't have to touch the command line. Same goes for the casual use, KDE for example is very similar to Windows, I use it myself.
Do you want to use specialized software? Are you an artist, designer? Then your favorite application may not have native port. You can do with WINE, but when you absolutely depend on a single application like certain Windows version of Photoshop, CAD, or music composing program, then it's more practical to buy Windows and use it natively.
Are you a programmer, do you want to learn new languages, experiment, create web pages? Then Linux is perfect for you, in fact, Windows is quite a poor substitute in this case. The Windows CLI is still very poor, compilers and interpreters are often commercial, you have to get them and install separately. That said, if you want to develop games, DirectX 11 is probably much better suited than OpenGL that lacks certain important features supported by modern GPUs - like multithreded rendering, etc. The greatest advantage is the availability of huge amount of software you can install from the repositories with a single command. Do you want Python? Fine, you type one command, you can use python. Perl, ruby? No problem. High quality IDEs are available too.
Do you want to play games? Here it depends on how demanding you are. If you want to play everything, you are better off with Windows, no doubt. But for example Steam has ever-expanding selection of quality Linux-native titles (they want to start a linux-based console), titles like Wargame European Escalation, Portal, Counter Strike, Oil Rush, and more. Not to mention excellent free games like Wesnoth, freecol, Urquan Masters, dwarf fortress, and so on. You can play old games in dosbox without problems. That said, you can do all this in Windows too. Just keep in mind that Linux has games to offer too, just not as many.
Do you want to learn how computers work? Here, I believe, is the strongest point of Linux. You can stay within the gui of your favorite applications, or you can go beyond them and learn something. Recently, I had a complain from a Windows admin that their mail is not working. "I just click the Send button and it ends with an error". For an admin, not a very good effort. You can go further and find out that mail clients connect to TCP port 25, you can telnet to port 25 yourself and what a surprise! The SMTP protocol is text based, the servers are talking to each other. And this one says "4.7.1 Client Host Rejected - Cannot find your hostname". What does it mean? You google it, it means the sender lacks reverse DNS record for his IP. You read a bit about DNS, you understand what reverse records are, you verify with dig command that yours is indeed missing, you ask your ISP to set it up, and voila, your mails are no longer rejected. You have solved a problem yourself, and you have learned more about how computer works. How does it relate to Linux, you might say? Linux is based mostly on text based configurations and modular architecture, many processes that do specialized things, and each one is configurable, and each can produce a log where you can find what's wrong. A good CLI with TAB completion, an editor with syntax highlighting can make your reading of code easier. You can compile programs yourself, you can look into the code and understand sometimes how they work. When you become more experienced, you can perhaps write a patch or two on your own. Windows, on the other hand, is a very closed system that does not like people peeking behind the beautifully painted cover. It's like a moody, growling guy who keeps telling you - nothing to see here, go away. You insist? Find, here are a few incomprehensible numbers, see what you can make of them. Error 0x43221234, see what you can make of that. Oh, you look it up? "System error - contact your MS support". There you go.
To conclude, everyone must decide for himself. Linux distros are no longer a bundle of files that require an expert to install and run. There was a great effort to provide smooth and trouble-free user experience. Most apps (browser, mail client, text editor, etc.) are present with functionality that is sufficient for most users. If you are a flexible, inquisitive person who likes learning new stuff, Linux may be exciting for you. Or it can be a source of enormous frustration. But so can Windows. Both systems are evolving, and both have gone a great length towards quality. And both have problems that won't go away overnight. In the end, you won't really know the answer unless you get your feet wet.
And there is a great way to do that - many distros including Ubuntu offer LiveCD - an option to boot and run Linux without installing it and altering the filesystem. You can try it, and if you don't like it, just throw the CD away and boot back to Windows from your HD. There is little to lose this way.