ganz einfach, keine panik

(a<<b) : verschiebt bitweise den wert a um b bits nach links
(1<<0) : 00000001 nullmal nach links = 00000001
damit kann man schön einzelne bits setzen, z.B. wenn man Bit 3 haben will
(1<<3) : 00000001 wird danach zu 00001000

PIND ist das byte, das den Zustand der Eingangspins von PORTD beinhaltet, das '&' ist ein bitweises 'und'

nehmen wir an, an D sieht es binär so aus:
00000000 : alle pins auf low
00000000 'bitweises und' 00000001 : ergibt '0', da im Ergebnis ein Bit nur dann gesetzt wird, wenn es in beiden Operanden gesetzt ist. Daher kriegen wir immer '0', solange Bit0 auf 0 ist, die restlichen Bits werden durch die Verknüpfung ausmaskiert, PIND kann also z.B. auch so aussehen :
11010010 : verknüpft wie oben ergibt auch 0, mann kann also später die anderen Pins auch benutzen, ohne das die Abfrage darunter leidet.

sobald Bit0 jetzt mal high ist, sieht das dann so aus:
xxxxxxx1 'bitweises und' 00000001 : ergibt 1 -> !=0

das '!=0' macht Sinn, wenn man z.B. nicht PD0 sondern PD5 abfragen will:
00100000 & (1<<5) : ergibt nämlich 1<<5=32 -> !=0

ich hoffe, das hilft dir ein wenig.