Возможно ли залочить роутер под конкретного провайдера?
Да.
Как это вообще делается? Насколько я понимаю, модифицируется прошивка, но что конкретно?
Совершенно верно.
Если конкретно - можно просто указать характерные для этого провайдера настройки, и убрать в прошивке возможность изменения этих настроек пользователем.
Например указать шлюз провайдера, APN, тип подключения, и.т.п. - на что фантазии хватит.
Сейчас чаще всего делают прошивки с двумя учетками - админская, доступ в которую есть только у провайдера, и пользовательская с ограниченными возможностями. И провайдер может в любой момент изменить настройки всех роутеров по сети.
На каком языке пишутся прошивки?
Да на любом в принципе. Тут зависит от устройства. Например какая-нибудь дохленькая железка вроде ардуино не позволить вам написать прошивку на JS или php. А если стоит нормальное железо - берется обычный линукс, добавляются нужные пакеты, пишутся необходимые скрипты или добавляются бинарники и готово.
Существуют ли какие-то конфигураторы прошивок? В каком направлении смотреть?
Не слышал о таком.
Что если взять какую-нибудь open-wrt и модифицировать под себя?
Не проблема - берите и модифицируйте. На то она и open.