The Arduino Micro is a DIP module that features an ATmega32U4 microcontroller which provides 20 digital I/O pins (of which seven can be used as PWM outputs and 12 as analog inputs). The board provides a 16 MHz crystal oscillator, a micro-USB connection, an ICSP header, and a reset button. This DIP module features two single rows of male header pins (0.1" spacing, 0.6" wide) on the bottom that allow it to be inserted into solderless breadboards for easy access to and wiring of all ATmega32U4 pins.
The Micro is similar to the Leonardo in that the ATmega32U4 has built-in USB capability, eliminating the need for a secondary processor as found on other Arduino boards. This allows the Micro to appear to a connected computer as a mouse and keyboard in addition to a virtual (CDC) serial/COM port. It also has other implications for the behavior of the board — particularly reset behavior. It also means that there are now separate Serial and Serial1 classes for the virtual serial driver and the hardware serial port, respectively. This also has an effect on the capabilities and assignments of some pins, e.g. SPI and TWI.
This ATmega32U4 board is pre-programmed with the Arduino bootloader that allows you to upload code to it via USB using the open-source Arduino development environment.
See also the mapping between Arduino pins and ATmega32U4 ports reference.
The SoftwareSerial library allows for serial communication on any of the Micro's digital pins. The ATmega32U4 also supports I2C (TWI) and SPI communication. The Arduino software includes a Wire library to simplify use of the I2C bus. For SPI communication, use the SPI library.
The Micro appears as a generic keyboard and mouse, and can be programmed to control these input devices using the Keyboard and Mouse classes.
The ATmega32U4 on the Arduino Micro comes pre-burned with a bootloader that allows you to upload new code to it without the use of an external hardware programmer. It communicates using the AVR109 protocol. It is possible to bypass the bootloader and program the microcontroller through the ICSP header instead; see these instructions for details.
Because of the way the Micro handles reset, it's best to let the Arduino software try to initiate the reset before uploading code, especially if you are in the habit of pressing the reset button before uploading on other boards. If the software can't reset the board, you can always start the bootloader by pressing the reset button on the board.