Для чего индекс в массивах почти всегда начинается с 0?
Далеко не всегда. Существует множество языков программирования, в которых индексация начинается не с 0, а с 1. Реже встречаются языки, в которых индексом может быть любой непрерывный диапазон перечислимых значений.
Но, в целом, 0 - удобный компромиссный вариант, во многих случаях позволяющий максимально просто записать выражения, вычисляющие индекс требуемого элемента.
P.S. Изначально - в Fortran (первый широко распространённый язык высокого уровня) - было как раз не с 0, а с 1: для удобства математиков, которые привыкли индексировать с 1. Нумерация с 0 появилась в языках высокого уровня позже: когда стало понятно, что в большинстве случаев код получается проще и понятнее.
Изначально это было ради оптимизации памяти, потому что первый элемент расположен в памяти по адресу массива с нулевым смещением. Сейчас лишний байт уже особо никого не интересует, но все привыкли. Хотя было бы правильнее и логичнее, если бы он начинался с единицы. И лично я в этом проблем не вижу, но многие начнут ругаться.
И с 1 начинается.
Потому что 0 это первая цифра так удобнее
Потому что массив всегда начинается с 0 числа.