I've just finished reading Growing Object-Oriented Software, Guided by Tests (Beck Signature) it is without doubt a very good book (I'd go so far to say the best book I have read this year).
Understanding how to do agile development well is not something you learn and then are finished with, it is something that you can always do better...
The first part of the book is about the fundamentals, and the rest is then applying to an example project. This involves creating user stories, the high level architecture and writing the acceptance, unit test and finally the functioning code - all at one vertical slice at a time. By this I mean that they show how you can evolve the architecture and code during the development process - something that is hard to understand without a worked example.
Going back over the fundamentals, with the clarity of these authors really taught me a lot. And the example allowed you to see what thay mean. The book is short and the diagrams nicely done - well recommend this one.