White roses can be found above an altitude of 80, pink roses can spawn anywhere but they are very rare. Black roses can spawn only in swamps, while blue roses can be found in jungles only.
You can also dye them any color that you could dye blue, you just right click the rose bush with a dye in hand, they can be dyed as many times as you want without mixing colors. You could also right click them with shears to get yourself an old vanilla rose colored the color of the rose bush you have cut it from, you can place these roses on grass/pots. You cannot dye cut roses.