Making an array of arrays

const byte currentPattern = &patterns[0];
Serial.println( currentPattern[2] );

// Will this print out "22" as hoped?

No, it won't. currentPattern is not defined as an array or a pointer, so the [] operator can not be applied to it.

const byte *currentPattern = patterns[0];

will define a pointer to the start of the first array, to which the [] operator can be applied.