Код нужно вдумчиво писать, а не просто пробовать len и len-1 потому что так все пишут.
Индексы массивов начинаются с 0. Т.е. первый элемент имеет индекс 0, второй 1 и т.д.
Функция len возвращает количество элементов массива. Следовательно индекс последнего элемента это len(a)-1
Обращение к элементу массива производится по его индексу.
Функция range(start,stop) создает последовательность чисел от start включительно до stop не включительно. 
 for i in range(0,len(a)) 
переберет все индексы.
 for i in range(1,len(a)) 
переберет все индексы кроме 0. (т.е. без первого элемента) 
В цикле ты получаешь элементы a[i] и a[i+1]. При i == len(a)-1 ты  пытаешься получить элемент a[len(a)-1+1] т.е. a[len(a)]. Элемента с таким индексом не существует и 
соответственно возникает ошибка list index out of range.
Я так понимаю что ты хочешь протестировать массив на наличие подряд идущих одинаковых чисел. Если использовать a[i] и a[i+1] , то нужно перебирать все элементы кроме последнего. т.е. 
 for i in range(0,len(a)-1) 
У тебя же range начинается с 1. Еще возможен вариант 
 for i in range(1,len(a))
    if(a[i-1] == a[i]) 
Предположу, что ты просто насобирал кусочки кода по разным местам и теперь пытаешься их соединить. Такие простые задания нужно писать самому, иначе потом будет еще больше проблем.
А еще я понять не могу зачем там умножение на 1?