All of my machines that are running Linux also run some version of Windoze. Please note, this works with Windoze NT, 2000, and XP. According to legend, Vista requires a different set up steps in order to make things work. I haven't tried dual boot with Vista as I think it's a crappy system.
As with all things I post here, this is my experience. There may be better ways out there to do things, but my method does work, and the system on which I am typing stands as proof. It's a Toshiba Satellite 1005-S157, just a bit modified from original (bigger hard drive).
1) Start with a blank hard drive, or one with data you are willing to sacrifice.
2) Insert the Windoze install CD (Win2K and XP), or the boot floppies (NT 3.5 or 4.0).
3) Create two separate partitions; the first FAT, the second NTFS. I will discuss my logic later.
4) Format these partitions and install Windoze.
5) Install Linux install CD.
6) create a native Linux partition and a swap partition as well.
7) Take note of the way the partitions fall using the Linux fdisk program. If the Linux partitions fall after the last Windoze partition, consider yourself lucky. If they fall before it, or between the FAT and NTFS partitions, you may have to play with your Windoze boot.ini file. See example below:
multi(0)disk(0)rdisk(0)partition(4)\WINDOWS="Microsoft Windows XP Home Edition" /fastdetect /NoExecute=OptIn
In order to get windoze to boot, you may have to change the number that appears in parentheses after the word "partition". I had to with this machine. Two other dual boot systems required no fiddling with the boot.ini file.
8) Install Linux into its native partition, and install either lilo or grub, depending on your distro, or the option you desire. When installing lilo, install it to the MBR. Do the same with grub. It makes killing off your Linux partition as easy as typing fdisk/mbr.
Now for the logic behind this set up. I first began playing with Linux in 1994, soon after Linus Torvalds first created the Linux kernel. At that time, the best, and really the only way to dual boot was to partition the drive as above. Now, even though Linux has come a long way, and is more forgiving of certain sins, I prefer to set things up in a way that is time tested and true.
While you might be able to do some nifty things with partition sizing software, I much prefer to set it and forget it when it comes to partition sizing. I have had bad luck with partition sizers in the past. However, I have never nuked a Windoze machine using my particular set up.
Setting up the first partition as FAT allows you to pass files between Linux and Windoze without having to use an intermediary, such as a network server. While you can compile the abilty to write to NTFS into the kernel, you also need a secondary program to allow you use that write access. Having the FAT partition eliminates this problem. Also, Linux supports writing to FAT32 as well as FAT16 without a secondary program, so it makes sense to have this.
Now, as I said above, this is only one of many ways that others have shared with you. I set up my machines this way because I want the most stability I can get on the Linux side of things. While the steps I take may not give me total stability, at least I know I have done the basics properly.
Good luck, however you make it happen...