first of all, there is no harm in having Touch in there. I am used to using it so the same code will work with a mouse, without a mouse, touch screen, tablet, phone, whatever...
if you don't have any instances on the layout at the start, then you don't have to worry about disabling the SetColor. If there were instances, then by default, they would look like they are selected...
in the code you posted, you are checking if the mouse is over Rocks, but in the subevent you are switching to All_Objects, then filtering those to only ones already selected. so you aren't adding anything new to the selection.
you can get rid of the subevent, and just set Rocks.Selected to true, and enable its SetColor.
if you have SetColor defined at the family level with the color you want, then you don't have to worry about changing it in code - just enable and disable when selecting and unselecting objects. (unless you want different objects types to have a different selected color)...