Es una pregunta muy razonable cuando se comienza con el C porque, si algo tiene este lenguaje, es que quien lo diseñó seguro que había fumado algo raro cuando implementó los comandos.
A ver, creo que será más fácil entender si comparamos "<<" con otro operador". Por ejemplo, el operador "<<" es un desplazamiento a la izquierda, al igual que el "+" es una suma.
Pues bien, si entendemos esto:
x = x + 1; incrementa "x" en una unidad y lo asignas nuevamente a "x"
también debemos entender esto:
x = x << 1; desplaza "x" a la izquierda un bit y lo asignas nuevamente a "x"
Llegados a este punto, hemos de decir que al señor fumado se le ocurrió simplificar estas fórmulas para ahorrar teclazos al programador a la vez que incrementaba su dolor de cabeza.
De esta manera, la primera fórmula es equivalente a:
x += 1; incrementa "x" en una unidad y lo dejas almacenado en "x"
y la segunda fórmula, por tanto, es equivalente a:
x <<= 1; desplaza "x" a la izquierda un bit y lo dejas almacenado en "x"
No sé si me he explicado bien, pero si no lo entiendes, fúmate algo y vuelve a leerlo.