Он используется и для динамических эффектов и для внутренней логики приложения, например обработка определенных данных, проверка валидации форм и т.д. Плюс может юзаться на сервере (Node.js).
По книгам : "JavaScript. Подробное руководство" Флэнагана и "JavaScript. Шаблоны" Стояна Стэфанова.