Because we can insert a lot of detail in a single image, we can give the illusion the object is extremely detailed without having to specify extra vertices. A texture is a 2D image (even 1D and 3D textures exist) used to add detail to an object think of a texture as a piece of paper with a nice brick image (for example) on it neatly folded over your 3D house so it looks like your house has a stone exterior.
What artists and programmers generally prefer is to use a texture. This takes up a considerable amount of extra overhead, since each model needs a lot more vertices and for each vertex a color attribute as well. However, to get a fair bit of realism we'd have to have many vertices so we could specify a lot of colors. We learned that to add more detail to our objects we can use colors for each vertex to create some interesting images.