Под словосочетанием «индекс массива» подразумевают «номер целочисленного индекса элемента массива«. Прикол в том, что когда в коде (в редакторе кода) пишут массив через квадратные скобки, то по факту пишут ЗНАЧЕНИЯ элементов массива, а JavaScript уже сам у себя в «невидимом» режиме «проставляет» нужные целочисленные ИНДЕКСЫ от нуля до какого-то положительного целого числа (зависит от количества элементов в массиве). То есть кодер (программист) не видит эти индексы, но они есть.
Считайте это небольшим визуальным улучшением. Представьте себе, что у вас массив из 1 миллиона строк. У вас и так много значений, а вы ещё будете приписывать номера для каждого элемента в самом коде. Очевидно, что в этом нет никакого смысла т. к. номер индекса на следующем элементе увеличивается на один. И так у всех. Эту писанину можно «опустить» (убрать с глаз) и сконцентрироваться на самих данных (значениях).
Как это понять?
Любой элемент массива состоит из пары «ИНДЕКС / ЗНАЧЕНИЕ».
Индексы — порядковые номера элементов. Сначала идёт первый элемент, потом второй, потом третий и т.д..
Значения — это данные, которые мы храним в элементах массивов. Именно эти данные представляют наибольшую ценность в массивах.
Если мы хотим дотянуться до «данных» в массиве, то мы должны знать «порядковый номер» элемента в этом массиве. Если мы хотим дотянуться до «ЗНАЧЕНИЯ элемента» в массиве, то мы должны знать «ИНДЕКС элемента» в этом массиве. По индексу мы находим значение.
Если мы не будем знать индекса, то мы не сможем получить значения из массива.
Если мы обратимся к элементу массива по другому индексу, то мы получим другое значение.

Информация из стандарта ECMAScript
ArrayLiteral — это выражение, описывающее инициализацию объекта Array с использованием списка из нуля или более выражений, каждое из которых представляет элемент массива, заключенного в квадратные скобки. Элементы не обязательно должны быть литералами; они оцениваются каждый раз, когда оценивается инициализатор массива.
Элементы массива могут быть опущены в начале, середине или конце списка элементов. Каждый раз, когда запятой в списке элементов не предшествует AssignmentExpression (т.е. запятая в начале или после другой запятой), отсутствующий элемент массива способствует увеличению длины массива и увеличивает индекс последующих элементов. Исключаемые элементы массива не определены. Если элемент опущен в конце массива, этот элемент не влияет на длину массива.
Представьте, что у нас есть пустой массив:
var klass5a = []
Мы проинициализирвали массив при помощи квадратных скобок. Этот массив пустой — в нём нет элементов. Теперь задайте себе вопрос — как добавить новый элемент в этот массив?
Что проинициализировать элемент массива, нам нужно будет воспользоваться «другими» квадратными скобками. Например добавим первый элемент массива:
klass5a[0] = "Иванов Пётр Владимирович"
Обратите внимание. Мы в квадратные скобки написали тот самый «невидимый» номер, который является индексом первого элемента массива. Да, да. Вам не показалось. Индекс 0, элемент 1.
Если мы сейчас выведем в консоль браузера наш массив, то браузер нам покажет существующие в нём элементы, их индексы и их значения.

Вот это и называется индексом массива!
Как заменить значение элемента под определённым индексом?
Индекс нужно знать для того, чтобы иметь возможность «переназначать» значение. Представьте, что у вас есть кошелёк в сумке. Сегодня вы положили в кошелёк 2 тысячи рублей, а завтра положили 5 тысяч. Кошелёк один, а значения разные. Так же и с элементами массива — индекс один а значения можно менять сколько угодно.
Переназначим в нашем массиве значение «Иванов Пётр Владимирович» на «Светка-Конфетка»
klass5a[0] = "Светка-Конфетка"

Информационные ссылки
Объявление массива через квадратные скобки []
Как обратиться к элементу массива?
Как получить первый элемент массива?
Как получить последний элемент массива?
Стандарт ECMAScript — Раздел «13.2.5 Array Initializer» — https://tc39.es/ecma262/#sec-array-initializer