Б1.1. Специальности в программировании не существует.
Б1.2. Чем ниже порог вхождения у языка, тем быстрее можно получить инструментарий достаточный для работы.
Б1.3. Знать язык программирования, ООП, структуры данных.
Б1.4. Джуном на плюсах устроиться при желании шансы близкие к 100%, а стоит ли — сами решайте.
Б2.4. Математика абсолютному числу программистов не нужна, ее учат, чтобы прокачать мышление. Обычно это линейная алгебра, аналитическая геометрия, булева алгебра, тервер, матан.
Б3.1. Достаточно одного рабочего языка.
Б3.2. Начинать нужно с Си, он дает хорошее представление о том, что вообще происходит. Потом можно учить что угодно.
Б3.3. Выберите язык и задайте отдельный вопрос.
Б3.4. Зависит от языка, например Swift регулярно ломает совместимость, а С++ нет. Переход на новую версию (утерявшую совместимость) обычно занимает пару дней. Если совместимость не ломалась, то вообще не проблема. Например, я до сих пор не использую большую часть даже С++11 и это не мешает работе.
Б3.6 Начать лучше с языка без ООП.