I am newbie to JSF and want to learn . Where and how should I start? I heard names like myfaces, icefaces etc etc. What are the differences between them? Do they have different APIs and tag libraries or same API and different implementations? It is better to learn which version JSF1.2 or JSF2.0? I am also considering taking JSF certification once it goes live. How can I make my learning JSF to help me take certification also?
There are plenty of documentation and tutorials on JSF in the Web.
MyFaces and IceFaces are two essentially different things. There are variations of JSF out there (MyFaces) and there are rich JSF subframeworks or extensions (IceFaces, PrimeFaces, RichFaces, etc.). While JSF-like ones are MVC frameworks, the mentioned extensions add ajax/theming capabilities and extend the basic MVC framework's functionality.
As for JSF1.2 vs JSF2.0, it depends on the extensions you prefer to use. If you are into RichFaces (which IMHO is the most high quality extension out there) then the choice is JSF1.2 since the JSF2 based version is still in the alpha stage. If you prefer extensions like PrimeFaces the JSF2 is the right answer, though I'd strongly recommend to familiarize yourself with JSF1.2 anyway.
For a certification I suppose you should start with the original JSF1.2 and work with it untill you feel you understand it completely, then you could pass to JSF2 which after you feel "at home" with JSF1.2 will seem as a piece of cake to you.
Some may disagree with my JSF1.2 preferences over JSF2, but the thing is that if you plan to use your knowledge in work for some software development company you'll find soon enough that most of the existing systems are still based on JSF1.2 and your experience in this version will give you much more. Also as mentioned before: learning JSF2 after JSF1.2 is really easy, essentially JSF2 has very few differences compared to its predecessor.
Wanna install linux on a vacuum cleaner. Could anyone tell me which distro sucks better?