I can't help you with books, but I've had a few experiences with 'agile' which I'll attempt to sum up.
My understanding of 'core' of agile is this:
Rather than plan a big project and then proceed to work on it for the next 6 months, only plan short term (couple of weeks or so) cycles, and communicate with your customers frequently, to allow the customer to adjust the 'course' of the project at the end of each short cycle.
There are a ton of other processes/things you can add around the edges, like XP, scrum, or whatever, but essentially they're all just flavouring for the main course.
In my experience, this works very well when you have a specific customer who you can communicate with regularly. The ideal situation is as a contract developer team, working on a specific piece of software for a third party. Unsurprisingly, this is the situation that Kent Beck and co were in when they came up with the agile methodology.
However, a lot of software development doesn't actually work like this.
If you're a software shop developing something new that you can sell, you don't have any 'customers' that you can go to for direction. I've seen some attempts to rectify this by 'pretending' to have clients using feedback groups/business analysts etc, but having been on a team that tried this, it doesn't work.
If you're working on in-house software, for example developing a CMS for your company to use, you often don't have any clear cut point of contact. You will instead have 50 different managers and potential users, all with their own agendas and ideas. Your product gets 'steered' in 50 different directions at once.
In saying that though, there are a lot of good ideas that come out of agile. IMHO the most important one you can have is that your main codebase should always work.
Even if you don't have any customers that you have to present a working product to every 2 weeks, operating under the assumption that you might have to release every 2 weeks causes you to treat your code differently (for the better).
Also, a lot of the 'practices' that came out of agile are great, for example continuous builds, unit testing, etc, and are fast becoming things that everyone should be doing regardless of what religion methodology they subscribe to :-)