Как уже отмечали другие, шаблоны являются очень важной частью языка C ++. На самом деле, они сами по себе являются языком тьюринга;)
Тем не менее, STL не только интенсивно использует шаблоны (когда-либо использовались std :: vector или std :: pair?), Но и многие другие библиотеки тоже ... наиболее заметным является, вероятно, boost. Надеюсь, это даст вам представление о том, насколько они важны.
То, что вы обязательно должны изучить, это то, как использовать их в контексте классов и функций. Когда вы освоите это, вы можете перейти к более сложным темам, таким как специализация шаблона или параметры шаблона-шаблона.
И если вам все еще не хватает шаблонов, вы можете проверить
«Шаблоны C ++: Полное руководство» Николая М. Йосуттиса и
«Современный дизайн C ++» Андрея Александреску. Хотя последнее действительно трудно понять.
Для начала, этот ресурс http://www.parashift.com/c++-faq-lite/templates.html тоже может быть полезен:)
Обратите также внимание, что Generics - это не "шаблоны в C # / Java" или наоборот ... они следуют другой концепции.