What's your programming background, what language are you planning to use and how advanced is your command of it?
To give you a brief history of my experience... when I resumed programming on my own after many years of not programming at all and then coding plugins for 3d apps and later some afterFX filters, I would start writing little games. Playing with refresh on buffers to create simple motion blur effects, I realized again how simple it would be to make a painter by simply not clearing at all. Then I realized that painting with different colors at different alpha values would create certain blending troubles, so I came up with a simple solution to fill an extra buffer with the current color and only paint alpha values on that, blend that buffer with the final image and only merge it down after a stroke has finished. I'm almost certain this is how one would normally do that. This was many, many years before Verve.
In Verve things work very differently, though, creating extra challenges you should not have to fight with, if you "just" want to make a neatly digital painter.
For multiple layers it's best to first of all create a layer class. The class should have fields for image and various parameters such as x,y offset, possible effects values (color treatments) and what ever else may be relevant to each single layer. Then it should have methods for its drawing. They should support the various blending modes you'd like to offer (replace, add, multiply, overlay...what ever...).
Later on you'd have a display routine that would loop through all the layers in your array and call their drawing method.
Though I currently still do that all the time in Verve, I will later on optimize it to create temporary combinations without having to redraw them all the time. That's tricky, because if you paint on a layer in the middle of the set and different blend modes are on top, they can't just be combined without having to be recomputed. Unless, hmmm....I might think of some faster solutions there. Anyway...not relevant to you right now.
Brush is a wide open topic. You can think up any wild way to make a brush work. I've written a lot of different systems, only a few of them are actually in Verve right now. Years ago I wrote some crazy particle based brushes that were extraordinarily brilliant for hair and fur and all sorts of vegetation, hehehe. But there's no end to what you could come up with. I have some hidden possibilities in Verve right now, which I will bring to light real soon that are also really, really fun and powerful.
Most complicated there are the way you process strokes! If you are not on a supercomputer, hehehe, you may have to interpolate stroke coordinates between the frames of you capturing the pointer (mouse, pen or touch). But I think you'll be thrilled by the time you get to those troubles, hahaha, so... let's talk more then!
Good luck already and I'm also happy to help you, but don't expect to get my fluids routine!