I am reading Agile Estimating and Planning, by Mike Cohn.
I really like this book and it has helped me on the several things, from user story points to burndown charts. My favorite topic in the book is using user story points in estimating.
Most people on projects (especially developers) have difficulty estimating the amount of work that needs to go into developing and delivering functionality for user stories. Developers usually estimate development work only (no testing or cross-functional tasks), and are either really high or really low. Mike Cohn recommends using user story points, where a relative point grade from 1 to 10 is made on each user story (divided as much as possible, but without getting into discrete tasks). The relative point system can be used to compare the expected work of user stories when making estimates, and will encourage discussion between the cross-functional teams. Then after one or two small iterations it is clear the "velocity" that the team is working at (user points completed/burned per iteration). This can be used to more accurately schedule future iterations, schedules, and releases.
I highly recommend this book.