You’ll need to do a little planning so this will work as expected.
When you make the initial surfaces, I would put them on an LED layer.
Override the layer color by assigning the Object color to “By Parent”.
Choose a logical location for the insertion point. My guess in this case would be the bottom center of the LED so when inserted it would sit on the surface centered around the geometry.
The layer that is current when you insert the block will be that block’s “reference layer”. If you change the color or that layer, then the “by parent” setting of the objects in the block definition, will display the reference layer’s color in a wireframe or shaded style display.
You block instances shifted because when you updated them, you did not choose the same base point relative to the geometry when originally created.
They don’t change color because the surface making up the blocks are on a layer that has a color, and the object color is set to “By layer”.
Does that make sense?