In easy terms to understand, your HDD is formatted in many, many segments, all the same length long. If a file fits into one of the segments OK, there is no fragmentation. The CPU just goes to that segment and reads the file.
If however the file is much larger, say ten times larger, than one segment, the CPU has to put it in 10 segments to have it all saved. If there are 10 segments right next to each other, the file is broken up and placed end to end in an orderly fashion and there is no fragmentation. The CPU can just go to the first segment and read each one right after the other.
If however, there aren't adjacent segments to store the file, the CPU puts one fragment here, another fragment someplace else, another fragment or two in another location, and so on, until the files is all stored (but 'fragmented') It could be all over the disk, so when the CPU needs the file it has to spend time gathering up the pieces from all over (fragments) to use it.
Defragmenting a disk, then means rearranging all the pieces (fragments) of the file and placing them all together in order end to end, so its 'non fragmented' or defragmented, like sentences on a piece of paper to read.
Sounds simple, but when you have thousands of files in hundreds of fragmented pieces, not just your data files, but windows files and program files, the computer has to go get each fragment individually to be used. That can take a lot of extra time and HDD head movement to accomplish it.