Вы всё верно поняли, по идеи
[].indexOf.call(document.querySelectorAll(s), this)
то же что и
document.querySelectorAll(s).indexOf(this)
Но
document.querySelectorAll() возвращает коллекцию типа NodeList и это не тоже самое что Array, поэтому у неё отсутствует свой метод indexOf(). Так что конструкция [].indexOf.call(document.querySelectorAll(s), this) - это такой хитрый способ выполнить indexOf над объектом у которого нет метода indexOf. Я так подозреваю что где-то в недрах indexOf() превращает this в массив при помощи Array.from(). В этом можно убедиться, например, получив "1" при выполнении [].indexOf.call('abc', 'b') и "-1" при выполнении [].indexOf.call(1, 1).
По-хорошему изначальную конструкцию можно переписать в
Array.from(document.querySelectorAll(s)).indexOf(this)
Тогда она будет вызывать меньше вопросов.