Um...no, it won't be compatible with all or even most Windows programs. Using Crossover office you can use quite a few Windows programs, and Winex lets you run a lot of DirectX games. Look for programs that have both a linux and windows version (many games have a linux executable, nero has a linux version, etc.). Also look for compatible programs, i.e. OpenOffice.org is compatible with Microsoft Office files.
Before you switch, I'd start using programs that have a linux counterpart such as OpenOffice.org, Mozilla Firefox, Gaim, etc. Makes the conversion a lot easier.
As far as hardware, linux supports a lot of hardware, it even supports some hardware out of the box that Windows doesn't. If you have a store-bought computer or laptop, you can probably search the model number and see what experiences others have had with your PC and linux. Just an example, my laptop is a Compaq R3000Z. I did some research, and saw I'd need a wrapper program to use my wireless card, but everything else would work. So I installed linux, used the onboard nic to update and get the wireless part working, then switched to using the wireless network. Then I installed nvidia's video drivers (they're one of the few vendors that directly provides linux drivers), and everything worked great.