First attempt at looping through (not full) matrix led strip...

In the 2nd one:
for (int led=3; led>=0; led--){
&
for (int led=7; led>=0; led--){

these will count down from B00000011, B00000010, B0000001, B00000000
& B00000111, B00000110, B00000101, B00000100, B00000011, B00000010, B0000001, B00000000

so you are not getting the bit shifting that you are expecting.
Check the reference page on ++, -- vs << and >>
You also led as int's (16 bit variable) vs byte's (8 bit variable), which could make a difference.