Hardware - whatever you need to program your chosen chip, and whatever else it needs to run.
Software - C, or some variety of C.
Personally, for somebody new to this, I'd be more inclined to recommend something Arduino.
You can pick up cheap Arduino clones for not much money, they have everything onboard to program them, and the Arduino IDE is free. The Arduino IDE is a bit simplistic and uses C++, however there are lots of examples to get you going, and if you then want to use C, you can.
I know lots of people criticise those that use Arduino, but I think it's a very good complete solution for anybody looking to use micros for the first time.
Another option would be some of the ARM development boards that work with the mbed system.
As a beginner, I'd avoid jumping straight into any of the more commercial orientated systems, as they can prove to be very overwhelming if you've never programmed a chip before.