Sounds like fun. Here’s how I’d approach it. You really only have 22 pieces – 8 corners, 8 sides and 6 centers. The centers are easy because the don’t move – they just rotate.
I don’t think I’d use any parenting except to keep the three faces of a corner piece or the two faces of a side piece together. You have to keep track of the moves somehow, because the expressions won’t be able to figure out their own current value without recreating the whole sequence. So I think I’d use a text layer with “standard” Rubik’s cube notation of:
U = upper face
D = down, bottom face
L = left face
R = right face
F = front face
B = back face
Maybe use upper case for a clockwise turn and lower case for ccw. So a sequence of moves might look like: LFlf
For a simple scheme, where moves happen at fixed intervals, the expressions for each piece would use the text layer sequence info and the time to figure out where they should be right now in position and orientation.
Something like that.
Dan