for i in index_list:
mult *= rnd_list[i]
Должно быть правильно. Если вываливается IndexError - значит, в index_list есть индексы, которые не вписываются в rnd_list - либо >N-1, либо <-N. Уточняй условие задачи, что делать, если встретились такие индексы.
Ну и можно для уточнения ситуации сделать так:
N = len(rnd_list)
for i in index_list:
try:
value = rnd_list[i]
except IndexError:
print(f'Не удалось взять элемент с индексом {i}, он не в диапазоне {-N}...{N-1}. Игнорирую индекс.')
else:
mult *= value