[...rangeOfNumbers(startNum, endNum), endNum];
этот код ставит последним элементом массива endNum, а перед ним разворачивает рекурсивные вызовы самой себя. Три точки просто разворачивают массив, который возврашает функция.
const arr1 = [1,2]
const arr2 = [ ...arr1, 3,4] // [1,2,3,4]
C пониманием тернарного оператора, так понимаю все норм?