Defragging is often good, and can speed up a computer.
When programmes are installed, they are installed on the first free spaces on the hard drive. If you uninstall a programme, it will delete it from the hard drive, leaving empty space on the drive. This means if you install a programme, it will install in that empty space. If the programme is larger than how ever big thatempty space it, it will look for the next available space to install it into. And so on.
This means a programme can get spread across a disc in various bits of free space. I hope you understand what I mean.
A defragmenter analyses the hard drive, and reorganises the whole drive. It says it 'moves' things, but that doesn't mean a file has moved from say C:\ to My Documents...it just means it's been arranged better for faster access on the hard drive.
If a disc is fragmented, it takes longer to load a programme, because it's dotted accross the disc. Once it's been defragmented, it 'should' load faster, because the files are all together and organised.
I advise using JkDefrag, which is very small and good imo.
http://www.kessels.com/Jkdefrag/
Edit; Defragging can take a long time, depending on the size of the hard drive, and how fragmented it is.