Whenever I install Linux on a box that has Windows, and I want to dual boot, I always defragment the hard drive as much as possible before resizing the partition. Is this just superstition, or is it actually a good idea?
If your hard drive is already defragmented with all the data at the start of the disk, then it makes resizing the partition easier. Long ago the partition resizing tools were not able to move the data, so it was a requirement.
Today if you hard drive is not already defragmented then there is no reason to defragment it first in an attempt to move the data to the front of the drive since the resize utility will do that automatically. All you are doing is shifting the effort from the resize utility to the defrag utility. The only reason that is advantageous is if your defrag utility has a better progress indicator and gives you the ability to restart when your resize utility does not.
I believe it depends on disk partition software that you use as some do a better job of it than others. The vendors themselves will be able to tell you if it is necessary for their particular software and also advise on any best practises.
Ideally you would want a hard disk per operating system. That way the core OS is installed at the start of each drive which will have the quickest access time. If you have a 1.5TB drive that's got 1TB of Windows and Music on it and you for example stick Linux on the spare 0.5TB then its bound to run slower given the nature of how hard disks work. They are after all still using moving parts to read the various platters of the hard disk.
I suppose the ideal solution if money was no object would be to use solid state disks, they shouldn't in theory need de-fragging much as the seek times of some of the quicker SSD drives is about the same when full or empty.
I think it depends on how the defragmenter works. There's a freeware defragger called jkdefrag that purports to optimize the drive for better access time first, but I don't know how that might interfere with a particular partitioning scheme (i.e., optimizing the position of files in a partition of size A would probably not be optimal as you're resizing it for partition size B) so you may not see much improvement.
If you intend to put Linux on a new partition then like others have said you will need to get all the data as far forward as possible. GParted will only let you shrink the existing NTFS volume/partition to the last block that holds data. Perfect Disk has a 30 day demo and has the ability to compact the data to the front of the drive. I also believe that the free opensource defragger http://www.mydefrag.com/ may have a script to do the same.
You'll want to use one of these as a first step.