As others have noted, Templates are a very important part of the C++ language. In fact, they re a turing-complete language themselves ;)
However, not only does the STL make heavy use of templates (ever used std::vector or std::pair?), lots of other libraries do, too... the most notable is probably boost. I hope that gives you an impression on how important they are.
What you should definitely learn is how to use them in the context of classes and functions. When you mastered that, you can move on to more advanced topics like template specialization or template-template parameters.
And if you still haven t got enough of templates, you can check out
"C++ Templates: The Complete Guide" by Nicolai M. Josuttis and
"Modern C++ Design" by Andrei Alexandrescu. Even though the latter is really a hard piece to understand.
For a start, this resource http://www.parashift.com/c++-faq-lite/templates.html might be helpful, too :)
Please also note that Generics aren t "Templates in C#/Java" or vice versa... they follow a different concept.