There are very good and thorough explanations online:
In a nutshell: imagine that you have an image with just two colors, blue and red. Encoding this simple image in a way that can represent every possible RGB color would be totally unnecessary and a waste of memory... so instead you can simply index the colors by defining a map of colors (which defines as many colors as the image has):
And then the image matrix consists simply of indices into this map:
So every 2 in the image matrix uses the color specified by the second row of the map, etc.. So you can recreate the the pixel colors of the image:
For a limited set of colors this method can take up a lot less memory than specifying the complete RGB for every pixel. Usually the order of the index is arbitrary, but specific to that image. Read the documentation for a more detailed explanation with lots of examples!