It’s always risky to prescribe the best of anything. “bestness” can’t be proved objectively unless everybody has agreed in advance to the terms-and that would take much of the fun out of it.
-Paul A. Merriman
While I hesitate at calling this the best, it is one of the better books on the subject of µC programming that I’ve found. For those interested in taking their knowledge of AVR programming beyond the realm of the Arduino, I recommend the book AVR Microcontroller and Embedded Systems: Using Assembly and C. It’s an introductory college-level text, and as such it might not be suitable for many. The book focuses on the programming aspects of the AVR family of microcontrollers, and doesn’t cover the hardware/electronics aspects in any true depth. It starts by covering the AVR architecture using assembly language, and then uses both assembly and C to show peripheral programming and interfacing (it’s not specific to the ATmega168/328 chip used in the basic Arduino). Unfortunately, it’s also expensive like a college textbook.