All for one. One for all.
the Atmel ATmega328p is commonly used in projects and autonomous systems where a simple, low-powered, low-cost micro-controller is needed.
ICSP it is an AVRtiny programming header for the Arduino. It is often refered to as an SPI (Serial Peripheral Interface) which could be considered an "expansion" of the output.
IO Pins allow users to test circuitry on a breadboard. Using the Arduino programming language, the board can read electrical input and send out programmed electrical signals.
While the Arduino Uno can be powered by the USB port alone, the power port a more flexible option for mobile builds like RC cars and quadcopters.
The Arduino's USB port offers a universal solution for interfacing with the device. The USB port can also be used to power the Arduino.