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.