Как работает функция изменения положения элемента в массиве?
Вот документация на MDN
Чтобы поменять местами, надо:выдернуть первый, выдернуть второй,вставить на новое место первый,вставить на новое место второй.
Метод массива .splice() умеет и выдирать и вставлять одновременно. Его аргументы:позиция-из-которой, сколько-выдрать, вставить-этого, вставить-ещё, ...
А возвращает он массив выдранных. Поэтому [0] вернёт первый выдранный элемент.
Можно расписать вашу функцию подробнее:function swap(arr, from, to) {
  // выдёргиваем:
  const A = arr.splice(from, 1)[0];
  const B = arr.splice(to-1, 1)[0]; 
  // -1 т.к. массив стал короче после первой операции

  // вставляем
  arr.splice(from, 0, B); // 0 - ничего не вырезаем, только вставляем
  arr.splice(to, 0, A);
}
Ещё проще то же выглядит безо всяких splice()function swap(arr, from, to) {
  // выдёргиваем-копируем:
  const A = arr[from];
  const B = arr[to]; 

  // вставляем-заменяем
  arr[from] = B;
  arr[to] = A;
}