I understand that motors come with recommended speed controllers, be it encoders or esc. But what is the difference between the two?
If you are talking about an encoder that would be used on a motor, an encoder is the device that encodes the position of the motor into a particular format, so used to determine the exact physical position of the motor at any one time, where as an ESC or Electronic Speed Controller is used to actually drive the motor to a different speed.
Generally speaking, the ESC would be used to make the motor turn and the encoder would be used to tell you what position the motor is in. Some ESC's have a sort of inbuilt encoder that detects what phase angle the motor is in so it can control the motor effectively, this is usually used on brushless DC motors.
Hope this helps.