Different buffers for different objects

I have an object which contains classes which contain the data of the vertexes:
[class]class NFault
NVertexColors* Colors; //array of fill and wireframe colors
NVertexGeometry* Geometry; //array of vertex coordinates and normals
unsigned int* Index;

The colors have a much higher chance of being altered, so I've separated them into a different object from the geometry of the vertexes in order to have two buffers, one for the geometry and one for the colors, so that I can alter one set of data without having to re-copy all the other things which remain constant.

Now, if I want to have an array of such objects (NFault*), how will I do it? Can I have different buffers for different objects?

However, if I do that, I will have a problem when I define the shader, won't I?

//Fault 1
//Fault 2

Won't these conflicting binds clash?

How else can I do this (not necessarily using buffers, that was just an idea)? How can I create an array of such objects?

Will I have to redefine NFault, absorbing the values of NVertexGeometry and NVertexColors, transforming it instead into

class NFault
float** pos;
float** normal;
float** fillColor;
float** wireColor;
unsigned int* Index;

and then declaring each as an array of float[3] pointers?

Any ideas?

How can I have more than one object drawn with the class I have now? Will I have to alter it to the float** version of the class instead?