Необходимые знания для embedded developer'a?
Оффтоп: денег в вебдеве как правило больше, особенно в РФ (но глобально - тоже). Если это не смущает, читайте дальше =)
С++, Linux, Verilog - это все хорошо, но я бы занимался этим после того, как поработаете какое-то время, и поймете, куда хотите расти.
Абсолютный must, имхо: Язык C. Это рабочая лошадка firmware, без него никуда, зато остальные языки - совершенно опциональны. Какой-нибудь простой ассемблер (сегодня я бы сказал, армовский). Не обязательно быть мастером, но очень помогает понять, как работает процессор в принципе. Скучная школьная теория: архитектура ЭВМ, устройство операционных систем, конечные автоматы - все это для эмбеддера куда более актуально, чем для веб-девелопера Электроника. Необязательно уметь спроектировать шестислойную плату с учетом EMC, но читать схемы - это важно. А также способность потыкать плату тестером или осциллографом (в большинстве случаев ошибка все равно в софте, но успокаивает). Стандартная периферия и интерфейсы: UART, I2C, SPI, DAC/ADC.  Это до какой-то степени можно выучить и на ардуине, но лучше освоиться с настоящим железом Умение читать документацию на железо. Должно прийти при освоении предыдущих пунктов, если не ограничиваться копипастом из туториалов.
Если освоите до какой-то степени (главное - не увлекаться) этот набор, то можете работать в firmware.  А дальше уже можете развиваться куда душа лежит, и где будут карьерные возможности -  Linux, C++, электроника, DSP, whatnot.
Сам начал с Arduino. То есть C/C++.
Затем решил соединить 2 микроконтроллера. Они стали зависать. Пришлось освоить ассемблер AVR8.
Затем наступил черёд Verilog и VHDL.
Затем я стал писать свой интерпретатор Forth для AVR8, но понял, что задача слишком сложна для ассемблера, надо попробовать на C++ написать. Оказалось, что всё ещё сложнее, чем я мог себе представить.
Пришлось вспоминать теоретическую часть - компиляторы, интерпретаторы и т.д.