Нужно ли знать front-end, программисту back-end?
Я согласен с OnYourLips 
Добавлю от себя такой момент - судя по моему опыту надо знать и то и то на довольно хорошем уровне. Когда достигните Middle Full Stack Developer можно будет уже отдавать предпочтение backend или frontend и соотвественно перейти на кодинг только одной части.
На вопрос "зачем?" ответить легко - ты когда кодишь на беке ты должен понимаешь как фронтендер будет это использовать и наоборот. Если ты будешь тупо писать API без понимания работы фронта, то фронтендеры тебя схедя живьем.
Этот вопрос уже был на Тостере.
Если кратко, то достаточно основ HTML5.