1- What is the difference between JSF Implementations and Component Libraries?
JSF implementations implements the Sun JSF API Specification. They contains at least the standard components (that was the JSF 2.0 TLD, here's the JSF 1.2 TLD) to display any of the available basic ("plain vanilla") HTML elements.
JSF component libraries just adds that extra on top of the basic implementation, often with more skinnability, ajaxability, enhanceability, etcetera, so that you can just program it with a "single component" instead of "a bunch of components" or "custom components".
2- What are the various JSF implementations (like Apache MyFaces) that are available and what is the difference between each one of them?
There are as far two (major) JSF implementations, namely Sun Mojarra and Apache MyFaces. There's technically not much difference as they both just have to adhere the Sun JSF API Specification. Rather look at robustness, availability of documentation, level of support, grade of maintenance (speed of enhancements, bugfixes, releasing, etc), etcetera. I personally prefer Mojarra above MyFaces.
3- What are the various JSF component libraries (like rich faces and ice faces) that are available and what is the difference between each one of them?
There are lot of them, I'll limit myself to the "most used / well known" libraries. If you want more skinning capabilities, look at RichFaces (demo) or IceFaces (demo). If you want more ajaxical capabilities (than what JSF 2.0 already provides), look at RichFaces, IceFaces, Trinidad (demo) or PrimeFaces (demo). If you want more specialized/enhanced components, look at RichFaces, IceFaces, Trinidad, PrimeFaces or Tomahawk (demo).