The particular question about colors is already answered correctly.
When you say the sky is gray, you are pointing to a changing state, so it's estar. You can say "El cielo es celeste" (or "azul"), but with the meaning that blue is the (real) color of the sky. There's a little subtle difference. Most of the time you'll be talking about how the sky is now.
When you speak about things that don't change color, use ser. "Las rosas son rojas", "El auto es verde".
About the difference between both verbs, I wanted to add my two grain:
As stated before, the general rule to distinguish between both verbs is if you refer to something transient (estar, think status) or permanent (ser).
But then, this is subject to interpretation, plus some "quirks" that language evolution introduces over time. It's not as regular and logical as we (native Spanish speakers) tend to see it.
There's a nice article in Wikipedia (in English) I recommend you to read for the theoretical side:
For the practical side, I guess it's just study, practice, perseverance, and some help.