Basically my question is, from a code point of view how do I generate, store and display graphics to be used by this custom display?
Your 3-dimeninsional array will represent a bitmap where each led is a pixel. As usual, the color & brightness of each RGB LED is represented by 3 numbers. Hence, your 3-dimensional array . That's basically one still image or one frame in an animation.
I suggest you start by displaying still images before you animate.
The details of you send the image/animation to the display depend on the hardware design, of course.
You'll typically need to store at least one image/frame which represents the current image or "state" of the display. In some cases, the display itself has memory to store one frame. A shift-register type display or other serially addressed display will "hold" the state/image until it's updated. So you could generate a complex geometric image without ever storing the image in memory.
But unless you are generating geometric or random-like patterns, you'll probably need to store hundreds or thousands, or more frames.
For animation, you can store a sequence of bitmaps, you can move/shift the bitmap (or parts of the bitmap), or you can store the starting bitmap and then a sequence of changes. You can also have "mini bitmaps", such as a bitmap for each letter of the alphabet or a bitmap of a spaceship that you drop-into and move around in your main bitmap image.
It really depends on what you're trying to do and what's most efficient for what you're doing.
And it's generally "easier" if you can generate the bitmap/image rather than storing it... I've got a sound activated lighting effect (not a matrix or bitmap) and it's got millions pattern combinations that are generated randomly or algorithmically from an Arduino Uno with no additional memory. But, if you can do that depends on the kinds of images and the kinds of animation.
If you're playing a movie, obviously everything is stored. In a video game, you've got a combination of stored and generated images.