Обязателен ли индекс для внешнего ключа InnoDB MySQL?
Да обязателен
Таблица нормально создается и без индекса.
При создании таблицы индекс на внешние ключи добавляется автоматически.
Некоторые не советуют создавать индексы при проектировании таблиц, только при накоплении нескольких тысяч записей в таблице для ускорения запросов
Тут нужно понимать в чем разница между индексом созданным Вами по любому из полей, и индексом по внешнему ключу. Не рекомендуется заранее создавать индексы, т.к. на этапе разработки просто не понятно какие индексы действительно будут использоваться,на практике, а без каких можно обойтись (тем самым сэкономив время записи данных). С внешними ключами же история немного другая, они служат для проверки целостности данных, при вставке/редактировании (про всякие там джойны - вообще молчу). А значит каждый раз когда Вы добавляете запись, необходимо найти соответствующую запись по внешнему ключу. Поиск без индекса происходит очень медленно, поэтому его использование в этой ситуации по умолчанию вполне оправдано.
Вопрос 1: зачем встроили создание индекса?
Это плата за независимость от СУБД
Вопрос 2: разве при удалении таблицы индекс и ключ не удаляются вместе с ней? Или в разных СУБД бывает по-разному?
Аналогично с предыдущим пунктом, это плата за независимость от СУБД