Enumeration values in the initialization list work like a series of typedefs. Basically, each value listed in the initialization list of the enum will be replaced by the numeric value it represents. Since you didn't initialize the enum with the numerical values, it defaults to Red = 0, Blue = 1, etc. So in your if statement you are actually testing if favorite color == 1. I'm not sure how exactly the cin >> favorite_color would work to be honest, I don't use enums all that often because they can be a PITA to use.
Enums are ideal for grouping a bunch of things together with easily understood names. For example, I made a menu class a while back that allowed another code to select a location for the menu, TOP, CENTER, BOTTOM, and LEFT, RIGHT, CENTER. All of those positions were thrown in an enum to allow easy comparison through my code.
I haven't implemented it yet, but simply changing the textColor and bgColor from int's to say an enum of color with convertible values, I can allow the user to manually select the color they want to use without knowing the int value of each color.