1) We used Core JSF 2nd Edition (2007) extensively in our office and I think it was enough to see us through the project. You might want to checkout the reviews from Amazon and see what the other readers have to say about the currently available JSF books.
Mastering JSF, I think is an old JSF book (2004). If you're not concerned about the version, you can probably also give it a try.
2) I am no master of JSF but I think, it would help a lot to code, code, code.
3) If you try writing custom components, you will discover that almost all of the concepts you mentioned are required, so it's really a good measure of
testing your understanding of JSF.
Hope this helps.
[ May 14, 2008: Message edited by: Paul Michael ]