When you make COLORS1 into an icon, the entire surface of the icon—rather than only the right half—is the color of the parent window's background. Yet COLORS1 doesn't seem to have any separate icon logic.
You'll note that COLORS1 specifies a NULL icon in the window class:
wndclass.hIcon = NULL ;
This indicates that COLORS1 is responsible for painting its icon. The entire icon appears as the background color because Windows hides child windows when a program becomes an icon, and thus the colored background is completely uncovered.