I know that motion estimation has to do with calculating motion vectors, but where does motion compensation come into play. Can't we just do it with motion vectors, since, we are still calculating the differences in the displacement of the blocks in the reference and the target frames.
Motion compensation is the use of the motion estimation information to achieve compression. If you can describe the motion, then you only have to describe the changes that occur after compensating for that motion.
I used this article as a primer. Basically the first involves how you determine what movement is happening and the other is then used to determine what information changed after the movement and to describe what changes need to occur for playback.