Welcome to the boards! I'll try and answer some of your questions. First, no, you do not have
to be certified in a specialty in nursing and, as far as I know, you cannot get certified in any specialty before actually working in that field for a certain amount of time. Many people choose to get certified for personal-satisfaction (which is why I did it). There are hospitals that actually pay more for certified nurses and some actually will pay for their nurses to take study courses and the exam.
You do not need to have a specialty chosen before graduating from your program. Some specialties require a year of some type of nursing experience before you can apply for that position. To get your feet wet while still in school, you could apply for a nursing extern program that some hospitals have and you may get to choose which specialty you would like to extern in. Another path you could follow would be to become a nursing assistant in the unit that you would like to work in as a nurse to see how things run. You could also choose to shadow a nurse in different specialties to see which one is most interesting to you.
There are so many different types of nursing that you will never experience during clinicals in school, so even once you graduate, you might not find your "home" until you have had a few different jobs with different experiences after you become a nurse.
I don't know of a book that I can recommend to you, but I hope the info I provided helps to clear things up a little. Good luck!