They're both correct. (a) is probably the more natural way to say it. In writing, a hyphen would be useful to distinguish different-coloured pens (= pens of different colours) from another possible reading, different pens which are coloured. But that's not an important point. With (b), you could also use plural 'colours'.
Your first is fine as an idiomatic sentence. Your second needs a minor correction: "I have pens of different colours."
Some might suggest that the first could be interpreted to have more than one meaning, but that would depend on context. As a bald statement it means the same as the second sentence. Add some context and change the meaning: "John has red and green pens. I have different coloured pens." (My pens are neither red nor green.)
A more precise use of English would be "I have pens of various colours".
All your examples are good, with one problem: of different colour . What do you mean exactly?
Do you mean: I have one blue pen, one red pen, one green pen...? You need to say: I have pens of different colours. OR: Your pens are all blue, mine are all red. You need to say: I have pens of a different colour.
Some people say e.g. "a red pen" to mean a pen that writes with red ink; others would call this careless usage. (We say "to blue-pencil" a proof for "to edit" it, because editors used to use a pencil with blue lead to make corrections in copy.)