1) heisst ja
POTRB = PORTB | (1 << PORTB2);

Da | nur Bits setzen kann, wird das PORTB2-te Bit gesetzt (die anderen Bits bleiben erhalten, da sie eingelesen und unverändert wieder geschrieben werden), während in PORTB = (1 << PORTB2) noch alle anderen Bits auf 0 gesetzt werden.

Um einen Port zu invertieren kannst du den Wert merken oder schreiben
PORTRB ^= (1 << PORTB2);
^ ist XOR