Чем отличается верстальщик от front-end developer?
Верстальщик преобразует графический макет (Photoshop или иной) в набор HTML + CSS + картинки. Иногда к свёрстанному макету может подключить типовые библиотеки Javascript, например, slider для картинок, или всплывающие подсказки (tooltip), или диалоговые окна (dialog/popup).
Знания и навыки:работа с графическими программами, чтобы понять, как собран макетзнание HTML, HTML5, CSS, CSS3, понятие про веб-шрифты, спрайты и другие технологиипригодятся знания по HTML-фреймворкам, например, Twitter Bootstrap или Semantic UIнавыки кроссбраузерной вёрстки, чтобы в разных браузерах выглядело и работало одинаковонавыки отзывчивой вёрстки, чтобы можно было использовать на устройствах с разными возможностями и разрешениямизнание типовых решений javascript, чтобы реализовать простейшие вещи, заложенные в макете
Фронтенд-разработчик делает так, чтобы макеты, полученные от верстальщика, были наполнены реальными данными. Если приложение построено как client-side (то есть вся основная логика загружается в виде огромного javascript в браузер, а данные запрашиваются с сервера по AJAX; это называется "толстый клиент"), то фронтенд-разработчику потребуется следующее:знание HTML, HTML5, CSS, CSS3, понятие про веб-шрифты, спрайты, Comet и другие технологииглубокое знание Javascript, включая использование готовых фреймворков, библиотек и написание расширений для них, что подразумевает объектно-ориентированное и событийное программированиезнание AJAX, CORS и навык создания тестовых затычек на стороне сервера, чтобы можно было разрабатывать приложение пока бакенд не готов
Если фронтенд  строится на стороне сервера, то дополнительно потребуется знать используемый серверный язык программирования (например, Python, Ruby или PHP) и используемый фреймворк (Django, Ruby-on-Rails, Yii). На практике бывало такое, что фронтендер просил в нужной части проекта сделать var_dump от структуры данных, которую надо показать и перечислить серверные методы, которые надо вызвать по нажатию предполагаемых кнопок.
Зачастую фронтенд-разработчик может и сам закодировать эти серверные методы, если не требуется углубляться в серверную логику (отношения в данных, конкретная бизнес-логика, хранение данных, кэширование, очереди, крон-задачи). Я лично таких очень ценю.
И моё личное мнение - фронтенд разработчику не помешают базовые знания про UML. Иногда с ними так тяжело обсуждать обмен данными по AJAX. У них это какой-то непрерывный поток магической энергии, волшебным образом преобразующийся в буковки на экране пользователя, а вот для бакенда это набор отдельных операций, иногда ещё и асинхронный. Диаграммы последовательностей ни читать, ни писать многие не умеют. Таймлайны составлять не умеют.
-----------
Написал дополнение: copist.ru/blog/2015/08/29/layout-designer-vs-front...
Верстальщик накидывает шаблон сайта (как сайт должен выглядеть), а фронт энд программист накидывает уже функционал, вроде так. Фронт энд разработчику нужно знать php, CGI, JS, CSS и желательно владеть каким либо фреймворком (YII допустим) и/или CMS (Joomla, drupal например)