What is color management?
In short: Color management is the art of making colors look the same wherever, whenever.
Color management is about printing the exact same color as you see onscreen. It's about seeing the same colors on your laptop as on your desktop computer, at home the same as at work. Color management is about keeping colors consistent on different devices.

Color management is simple. Color management is quite difficult.
Both statements are true. In essence, color management is simple. But to employ color management in a way that works is generally quite difficult. That's why you're probably having a hard time to print your pictures the same as they look on your monitor. These pages will explain the essence of color management. You will learn how your printer can print the exact same colors as shown by your monitor. Pushing the right buttons and setting the right preferences is another issue though, but at least you will know what to look for and will be able to make more sense of your manuals.
First there is something you need to know about colors on computers. In general, computers will describe any color as a mix of red, green and blue. Why? Because red, green and blue light will mix you any color you like. Take a look at these examples:

a mix of red and green light

a mix of red and blue light

a mix of red, green and blue light makes white

While mixing red, green and blue is great, it also poses a problem. Because describing a color as a mix of 3 colors is providing a recipe rather than a specification. Each and every monitor, printer, scanner or camera has its own particular way of handling red, green and blue. This is caused by the technical intricacies of each particular device.

This is what one and the same mix of red green and blue may look like on three different devices.

Hand a specific recipe involving flour, eggs and butter to 3 different cooks, and you'll wind up with three different cakes.

Cake nr. 1

Cake nr. 2

Cake nr. 1

CIE
Because different devices handle colors differently, we will never have consistent colors if we stick to the mix of red, green and blue (RGB). Enter the CIE. CIE is a distinguished international organisation of color scientists that has existed for nearly a hundred years. The abbreviation stands for Commission Internationale de l'Eclairage. Which is French for International Organisation of Color Geeks. These bright people came to our rescue with a magical color system called CIELAB. A color specified in CIELAB can be reproduced anywhere anytime. It stands to reason that if our recipes of red, green and blue could be converted to CIELAB, we would be a step closer to our goal, which is making the colors on my monitor look the same as on your sister's printer. But how can we convert the colors?

ICC
In 1993 some major vendors in the computer industry got together to tackle the problems surrounding color management. They founded an organisation called ICC. Thanks to ICC, pretty much every computer these days has a build in 'color management module'. Because the computer industry loves abbreviations, the color management module is better known as the 'CMM'. The CMM is basically a converter which converts each individual mix of red, green and blue into a CIELAB value and back again. There's more to the CMM, but we'll come to that later.
In order to make a proper conversion, the CMM needs to know which device produced the RGB color mix. After all, each device has its own way of handling red, green and blue. If you have an RGB mix without knowing the source, it's anyone's guess which color it is supposed to produce. Here again the ICC comes into play. As an important part of their efforts, the ICC developed a standard 'color profile'. A color profile is basically a description of the color behaviour of a specific device. The color profile will tell you how to interpret the RGB mix in order to convert it to device independent CIELAB.

A profile describes how a certain cook bakes a cake. If you have a recipe (the RGB mix) and you know how the cook works (the color profile), you will know the exact specifications of the cake (the CIELAB value).

Let's put all our new knowledge in a scheme and see what we've got.
This is a non-color managed system. The RGB value from the computer is send to the printer unaltered. The printer has no clue how to interpret the data and makes its best guess. Taking into account that each device handles RGB differently, it should come as no surprise that a picture on one device will be different on the next.

When you send a recipe from one cook to the next, you can't expect that they will make exactly the same cake

This is a color managed system. The RGB value is send to the CMM along with a color profile. The CMM converts the RGB mix into a device independent CIELAB color. Next, the CMM converts the CIELAB value back into another RGB value, using the printer color profile. Please note that the RGB value leaving the computer is NOT the same as the RGB value entering the printer. However, both RGB values represent one and the same CIELAB color. As a result, both the computer and the printer can reproduce the color identically.

Color management adds a few steps in the process. But when done properly, the colors will be processed unnoticed in the background. Then the magic will happen: the colors on your monitor will appear exactly the same as in print.
To keep your colors consistent anywhere, you may also embed a color profile in your image file. This will make your images portable from one system to the next, while still retaining the same colors everywhere. Most of the popular image formats, such as jpg and psd allow the embedding of color profiles. Moreover: many imaging applications will embed a color profile by default, no action required on your part. Professional applications such as Photoshop and Illustrator offer a host of options for embedding color profiles. Color profiles look like regular files on your computer. They have an extension .icc or .icm. So if you find a file called 'monitor.icc' or 'monitor.icm' chances are you've found the color profile of your monitor. The .icc extension obviously stands for ICC. The .icm extension was introduced by Microsoft who decided that it would be usefull to have another extension for exactly the same file format.