Repartitioning
destroys data. (Well, not really. It's still there, it can just become inaccessible.)
There are tools that can safely
resize a partition (like Gparted, which comes on a LiveCD and is used by most Linux distro installers), and Windows Vista includes just such a tool in its disk manager.
Either way, most defragmenters
do move data to the beginning of the drive. They all basically work the same way. There are just a number of system files that will render Windows unbootable if they're moved, and can't be moved while the system is running, by
any defragmenter. Sometimes, after a lot of patch cycles, those files can migrate toward the end of the drive, which, of course, makes it harder to actually resize it.
And while Gparted is a very good tool, ntfsresize (the tool it uses to resize NTFS partitions) can still sometimes make mistakes... and move those boot-critical files when they're in the way.
All I can suggest is to be careful.