Как сделать функцию которая принимает любое количество массивов и удаляет из каждого массива первый элемент?
changeCollection как этой главной функции указать то что будет принимать сколько угодное количество массивов , а последним будет обработчик ?В современном js вот так: changeCollection(...arrays, handler)
В arrays будет массив с переданными массивами.
Если по классике, то вот так:function changeCollection() {
    var handler = arguments[arguments.length - 1];
    
    for (var i = 0; i < arguments.length - 1; i++) {
      var array = arguments[i];
      
      handler(array);
    }
}
Кстати, обратите внимание, что массивы в js передаются по ссылке, поэтому изменяя переданные аргументы вы изменяете и оригиналы:function changeCollection() {
  var handler = arguments[arguments.length - 1];
    
  for (var i = 0; i < arguments.length - 1; i++) {
    var array = arguments[i];
      
    handler(array);
  }
}

function deleteFunc(array) {
  array.shift();
}

var one = [1 ,2 ,3];
var two = ['b', 'c'];

changeCollection(one, two, deleteFunc)

console.log(one, two); // [2, 3] ['c']
Если вас такое поведение не устраивает, нужно делать копии и изменять и возвращать их. Для этого лучше воспользоваться готовыми библиотеками и не писать свой велосипед. В современном js, опять же, можно воспользоваться встроенными средствами: const clone = [...original];. Но если у вас внутри массивов не примитивы и вы изменяете элементы, то нужно делать глубокое копирование.
В JS функции могут принимать ограниченное число аргументов, так что передавать любое число аргументов в функции нельзя и поэтому следует передавать в функцию массив с массивами:function(arrays, cb){
    var len = arrays.length;
    for (var i = 0; i < len; i++) {
        cb(arrays[i]);
    }
}