Here are the main differences you'll see:
Motor type: Brushless motors require an ESC made for brushless motors. Brushed motors require an ESC made for brushed motors. You can't mix and match.
Voltage: Usually ESC's work for a range of battery voltages: 2S-3S, 3S-4S, 2S-4S, etc. Your ESCs and motors should have a voltage range that matches the battery you use.
Current: There are usually 2 current ratings - continuous and burst/peak. Continuous current rating is the maximum current the ESC can run at continuously, 24 hours, 7 days a week, without overheating. Burst is a higher current rating that the ESC can operate at for a short period of time (10 seconds, for example). Depending on the current rating, this may lead to physical differences like heat sinks or larger diameter wire.
Firmware: ESC's have microprocessors on them and different microprocessors need different firmware running on them. ESC's may be programmable so you can load your own firmware on them. A couple popular firmwares are SimonK and BLHeli.
BEC's: Sometimes you have other things on your multirotor that require a different voltage (flight controller, for example). If an ESC has a BEC, it will give you some wires that provide that voltage output that you can hook up to those components.
Size: Height/length/width/weight
I'm just learning this stuff myself, so I'm sure there is a lot more I'm missing.