Il punto è che questo Thread non è per spiegare qualcosa al nabbo di turno, ma una chiaccherata da Bar per utenti avanzati. Nessun'altro scopo se non quello di fare un pò di sana cagnara. 
Detto questo rispondo alla tua domanda.
Parliamo di livelli di astrazione.
Quasi tutti i uC sono Memory Mapped, ovvero ogni cosa, ogni operazione che agisca al loro interno, è un'operazione che fai da qualche parte in un indirizzo di memoria.
Questo vale, non solo per la Flash, la RAM e la EEPROM, ma anche per le periferiche interne: dalle porte di I/O, alla USART, I2C, SPI, PMP, CAN, RTTC, fino al Crypto Engine per i microcontrollori che ne dispongono.
Queste locazioni di memoria (indirizzabili dal Program Counter) stanno generalmente nella parte più "alta" della memoria, o meglil, degli indirizzi di memoria.
Altresì queste locazioni di memoria sono dei semplici registri (ne casso dell'ATmega328, registri a 8 bit) che possono contenere un byte o 8 bit.
Questi registri vengono chiamati SFR (Special Function Register).
Immagina la periferica come uno "scatolo" che funziona in diverse modalità, a seconda di come posizioni 8 interruttori, 8 microswitch, collegati ad esso.

Nella tabella sopra vedi i due registri che regolano le porte di I/O.
Il registro DDRx è quello che regola la direzione INPUT/OUTPUT del pin
Il registro PORTx è quello che regola se su una uscita ci sarà un UNO od uno ZERO.
Se scrivo DDRB = 0b00000001 significa che ho settato il pin 0 del PORTB come USCITA, mentre tutti gli altri PIN saranno ingressi.
Se scrivo DDRB = 0b00100000 significa che ho settato il pin 5 del PORTB come USCITA, mentre tutti gli altri PIN saranno ingressi.
Se scrivo DDRB = 0b10000001 significa che ho settato il pin 7 ed il pin 0 del PORTB come USCITA, mentre tutti gli altri PIN saranno ingressi.
Se scrivo PORTB = 0b00000001 significa che ho messo a 1 il pin 0 del PORTB, mentre tutte le altre uscite (se sono state settate come uscite), rimarranno a zero.
Se scrivo PORTB = 0b00000010 significa che ho messo a 1 il pin 1 del PORTB, mentre tutte le altre uscite (se sono state settate come uscite), rimarranno a zero.
Se scrivo PORTB = 0b00000100 significa che ho messo a 1 il pin 2 del PORTB, mentre tutte le altre uscite (se sono state settate come uscite), rimarranno a zero.
Se scrivo PORTB = 0b10010000 significa che ho messo a 1 il pin 7 ed il pin 4 del PORTB, mentre tutte le altre uscite (se sono state settate come uscite), rimarranno a zero.
E così via. C'è uno sfalsamento perchè i pin del PORTB (di questi registri) partono da zero e arrivano a sette, per un totale di 8.
Ci sono poi millemila modi per settare un registro, molti dei quali sono chiamati maschere o MASK
Metodo 1) PORTB = 0b00000011; (binario)
Metodo 2) PORTB = 0x03; (EXA)
Metodo 3) PORTB = 3; (decimale)
Metodo 4) PORTB |= 0b00000011; (questo metodo setta a 1 dove ci sono gli "uni" lasciando inalterati gli altri bit
Poi altre operazioni, chiamate di bitwise che non ho voglia di starti a spiegare, tipo robe strane così:
PORTB ~(&=0b11111100);
PINB & (1 << PINB0);
bitSet invece è una funzione, molto rapida, che fa la stessa cosa DIRETTAMENTE.
bitSet(nomeRegistro, nomeBit)
bitSet(PORTB, DDB0) = Setta a 1 il bit DDB0 del registro PORTB
bitClear(PORTB, DDB7) = Mette a zero il bit DDB7 del registro PORTB.
Ecc. ecc. ecc.
E' più chiaro ora? 