Wenn ich den Port so auf Ausgang setze DDRB = 0b00000001 muss ich dan auch noch DDRB = (1<<PB1); schreiben ?
Bewirkt beides das gleiche:
DDRB = 0b00000010 = Schreibe in das DDRB Register den binären Wert 00000010;
DDRB = ( 1<<PB1 ) = Schibe ein 1 Bit um 1 Stelle nach links und schreibe das dann ins DDRB Register also 0b00000001 um 1 nach links verschoben wird 0b00000010
PB1 ist in einer Prozessorinitialisierung mit #define PB1 1 definiert, liefert als nach dem Compilieren den Wert 1.

Übrigens kann man in C alle Werte als dezimal Werte z.B.123 angeben, oder in hex Schreibweise 0x7B oder binär 0b01111011 angeben.
Alle 3 Beispiele hier liefern den selben Wert.
Ich nehm halt immer das was für das aktuelle Problem für mich das Übersichtlichste ist.
Tabellen für ein Lauflicht würde ich da in der Binärschreibweise erzeugen.