1) Сам ассемблер знать не нужно
2) нужно знать что ассемблер вообще есть и полезно хотя бы минимально представлять как оно там внутри все работает и что есть семантический разрыв. Ну то есть не сам ассемблер даже важен, а принципы как оно что там выполняется, что есть конвееризация и т.д. Кэш процессора, зачем он нужен и т.д.
3) это не must have, это скорее факультативные штуки
4) это нужно для тех кто занимается разработкой систем, для которых критична производительность (так или иначе при оптимизации приходится ковыряться в опкодах/байткоде/разбираться что там делают оптимизирующие компиляторы).
5) это нужно для тех кто разрабатывает средства для дебага и профилирования.
Первые пару лет этого всего можно и не знать. А далее уже задачи сами определят, потом хотя бы поверхносные знания приобрести стоит просто для того что бы быть более грамотным разработчиком.