Wacky unknown pointer issues.

I don't think your pointer is pointing at anything.

Wouldn't it be more like below, based on what A Beginner's Guide to Pointers - CodeProject says

byte *layerPointer;

void CubeControl::writeCube(cubeStep thisCube)
{
    int startTime = millis();

    layerPointer = new byte;
    *layerPointer = 0;
    
    while(millis()-startTime <= thisCube.stepDuration)
    {
        for (int thisLayer = 0; thisLayer < numLayers; thisLayer++)
        {
            *layerPointer = &thisCube.layer[thisLayer][0];
            writeLayer(*layerPointer, thisLayer, thisCube.layerDuration);
        }
    }
    
    Serial.println(*layerPointer);
    
    return;
}