Angular 2 использует это, для визуальной совместимости со старыми браузерами можно сделать css template {display: none}
Используют для хранения шаблонов вместо хранения их в script
Нужно вывести json в DOM? для этого не нужен шаблонизатор - одна строка кода.
Можно какой-нибудь такой генератор html сделать.
А вообще, вам с начало нужно определиться, что нужно получить в результате.
Function используют для "компиляции" выражения/функционала, таким образом можно сделать непосредственное выполнение нужного кода, вместо его "интерпритации", что дает большую производительность и экономию памяти.
Да, можно сделать аналогичный функционал храня данные в замкнутых переменных интерпретирую функционал, но работать будет медленнее.