I don't have any book to suggest, but I can talk about how I learned...
First, I did some C on the computer to get used to programming.
After that, we went down to microcontrollers with assembly language. We compiled existing software of limited complexity (LED flasher, for example) and analyzed the code. This made us look in datasheets and learn the instruction set for the microcontroller we used. We could then modify the code, or write code from scratch. Around at this time, I started understanding what parts on the demo board were necessary and what parts weren't ; I could reproduce the circuit on a breadboard for my applications (power supply, oscillator, programming pins). We then looked at timers, interrupts, serial communication. Then we moved to C (which was already familiar) and went on to DSP.
I don't know what's the best way to start using microcontrollers ; you'll need for sure a way to program the ICs (you can build one for Atmel easily/cheaply if you're into electronics already, or you can buy one for Microchip for about 200$ if I recall correctly) and a platform to use your code on. This could be on a breadboard (if you're already into electronics) or on a demoboard (if you have money to spend). If you're studying electronics at a school, they may be able to provide you with these tools.
I learned with the Microchip 16F87x microcontrollers, which I believe were very easy; I know there are a lot of tutorials on the internet for 16F84 also.
If you're not already into electronics, you may want to start by reading about resistive circuits, transistors, and logic ICs...
Hope this helps.