Die Zeile "PORTD=(PIND&((1<<T1)|(1<<T2)))<<(LED1-T1);" könnte man etwa so auseinander nehmen:

Code:
unsigned char temp;

temp=PIND;		//temp hat jetzt den Wert von PIND
temp=temp&((1<<T1)|(1<<T2));	//alle bits in temp, ausser T1 und T2 sind auf 0
temp=temp<<(LED1-T1);	//verschiebt den Inhalt vom temp um so viele Stellen nach 
//links, wie LED1 von T1 entfernt ist. In Deinem Fall 3. Der Zustand von T1 ist 
//jetzt im 5ten bit, der Zustand von T2 in 6ten. Also genau da, wo auch die 
//beiden LEDs sind
PORTD=temp;	//Jetzt hat LED1 den Zustand von T1 und LED2 den Zustand von T2
"PORTD=(PIND&((1<<T1)|(1<<T2)))<<(LED1-T1);" ist einfach nur eine Zusammenfassung davon.

MfG Mark