In a nutshell
Shell sort is insertion sort with a head start. Instead of only comparing neighbours, it first compares and sorts items a fixed gap apart, then repeats with smaller and smaller gaps. Big early gaps shove out-of-place values across long distances quickly, so by the time the gap shrinks to 1 the list is nearly sorted and the final pass is fast.