1) Нужно ли понимать как работает компьютер на самом низком уровне? Как кодируются и обрабатываются сигналы в процессоре и как выводится ответ на экран?
Хотя бы в базовом виде, любое понимание на более глубоком уровне всегда можно дотянуть по возникновению задачи. Главное осознавать что искать, а для этого должны быть какие-то понятия основ.
2) Нужно ли обязательно знать "исподнюю" языков программирования, то есть как устроен и как работает интерпретатор или компилятор того или иного языка? Где он хранится в программе-обработчике и как взаимодействует с ОС и компьютером в целом?
Это нужно, во всяком случае если вы претендуете на серьезный уровень в своем деле. Большинство не сильно интересуется "что под капотом" пока оно выполняет свои функции как задумано. Но для серьезных вещей нюансы и использование таких знаний дают большой профит.
3) Нужно ли хорошо знать математику?
Спорный вопрос. Арифметика и базовые правила необходимы, естественно. Более глубокие знания нужны редко, но есть области, которые очень желательно знать хотя бы для понимания как можно сделать по науке (графы, деревья, дискретка в целом, алгебра и теория множеств будут не лишними, сложность алгоритмов...)
4) Нужно ли хорошо знать английский язык?
Да. Нужно. Хотя бы технический английский. Разговорный тоже нужен, тут и форумы, и конференции, и доклады международные и вообще практически все на английском изначально. На русский переводится лишь малая доля, а есть еще время на перевод и... короче, английский для программиста маст хэв.
5) Каким образом лучше учить программирование( в частности веб-разработку: сайты, приложения и т.д.) и в какой момент можно смело сказать себе: "Я - программист", ведь конечной точки нет, верно?
В момент написания на бейсике хелло ворлд можете себя поздравить - вы программист. Об уровне компетенции и качестве вашего кода на начальном этапе скромно умолчим.