In a product with two colors, is it better to use two itemprop
items or just one?
From the Microdata perspective, both ways are possible. The difference is that you are adding two values in the first case, and one value in the second case.
From the Schema.org perspective, we’d have to understand how this property was meant to be used. The description of color says:
The color of the product.
It uses singular here, so this could be a hint for using your first example. But it uses "The color" and not "A color", which might suggest that they only thought of cases where a product has only one (primary) color.
I think it makes more sense to use several color
properties. When using an own property for each value, consumers wouldn’t have to parse your string (possibly containing several colors) and trying to extract each color.
The only time I’d consider using one property containing several colors would be when I consider it to be "a new color containing other colors", so to say.
Oh, and just to be sure: Your markup would mean that one product is red and black, and not that you have the product available in red or in black.