White light contains seven colours: Violet, Indigo, Blue, Green, Yellow, Orange and Red. Every colour has a different wavelength and frequency. When white light travels through a refracting medium like a water drop, it bends. But every colour bends at a different angle. The angle of bending of Violet is the highest while that of red is the least. It is due to this reason that in a rainbow, the colour violet is at the bottom as it has suffered refraction to the highest degree while red is at the top. Hence, due to this difference in the angle of bending, every colour is separated from the other and can be seen distinctly when obtained on a screen.
When it rains water drops act as a prism with light and refract the colors of the suns light into many colors (Red, Orange, Yellow, Green, Blue, Indigo and Violet). As the light is refracted it splits and combines causing the variants in colors which normally appear clear.
I am not quite sure either, but I have been told that water reflects and refracts light. If you look at a lake and see a fish, that fish is actually in about a place a foot farther away then you see because of how the water reflects the light. Hope this helps:)