The main diffirence between a µC and a CPU is that a cpu only has busses (address, data,...) to the outside world, the actual IO devices and the memory are connected outside the CPU. A microcontroller has all these things onboard. program ROM (or EEPROM), RAM, inputs and outputs (digital and optionally analog) are all integrated into the chip, so it can function standalone.
Also, microcontrollers are meant to control things (hence the name), wich in most cases doesn't require serious number crunshing, therefore most µC are not very good at mathematics while most CPU's are.
Programming is indeed similar to (eep)rom programming.