idtjes3:
I don't know if you have figured it out by now, but you basically got it all wrong. You don't adress individual pins on a shiftregister directly like that in which you assumed (from the code snippet you showed).
It's actually simpler, as in more primitive.
The shiftOut() function takes a byte (8 bits) and shuffle it out one bit at a time. To do this it need two output pins on the Arduino, one for clock, which basically says the bit is ready to be read, and one for the bits (data).
The function shiftOut() does this automagically on all 8 bits (the hole byte) 
A shiftregister just receives these bits one bit at a time. Hence the first bit it receives, will pass through all its outputs until it reaches its destination, closely followed by the other bits (unless the shiftregister have an enable or latch or similar. In which case it wont show on its outputs until told to).
"shiftOut" shifts them out either from left to right (MSB first - Most Significant Byte), or right to left (LSB first - Least Significant Byte).
shiftOut(dataPin, clockPin, bitOrder, value)
http://arduino.cc/en/Reference/ShiftOut
The code snippet you show is just an array of values, not adressable to any individual bits on the shiftregister like you said. If you use shiftout on them, they will show up on the shiftregister eventually (it's pretty fast), but all the bits in any one of the dataArrayRED[] will be on the shiftregister.
So
shiftOut(dataPin, clockPin, MSBFIRST, dataArrayRED[0]);
If dataArrayRED[0] = 0xFF, which is binary 11111111 (the same thing) -> All the bits on the shiftregister will be 1's.
If instead it had ben 0xFE, which is binary 11111110 -> All the bits except the last one will be 1's (or the first, depending on the direction you shift them out - MSBFIRST of LSBFIRST)
There is a loop in the code you refer to which runs through the dataArray*.*
You can read more on that in arrays and control structures in the language reference page http://arduino.cc/en/Reference/Extended