El & a secas, es un operador logico. Toma los bits de la variables y hace un and con cada uno de ellos a nivel de bit.
Ej: 1011 & 1100 = 1000
El << es el operador de desplazamiento. Desplaza N bits hacia la izquierda
Ejemplo :
10110 , se le aplica el desplazamiento de 2 a la izquierda y queda 1100 (aparecen 2 ceros por la derecha y el 10 se lo come, porque no queda espacio).
Espero te haya ayudado, un saludo.