A func_precipitation can be very effective for your map's atmosphere. However, there are some glitches that can cause your map to lock up and crash, or at the least run slowly.
First, if you have rain and water in the same map, make sure they are positioned so that the rain does not go into the water. This has not been verified as a crash-causing glitch, but by preventing this, you can avoid more serious glitches.
Second, make sure your rain stays within your map. Rain and snow fall some ways below the end of your func_precipitation, and as such could fall out of your map. This has been noted as causing a map lock-up, and does not create a compile glitch. So, it is worth checking if you have precipitation in your map.
Thirdly, if the precipitation is too dense, causing more then 32000 vertices visible at once, it will cause a fatal crash. Dense precipitation is possible, but in sparsely populated areas.
Sometimes, when a func_precipitation is next to a thin enough wall, the rain or snow will fall through the wall and into your building. Since func_precipitation is a cosmetic entity, this has no effect in gameplay.
The density keyvalue is based on the volume of the individual func_precipitation. Because of this, having several func_precipitations of varying sizes with the same densities can create a varying rain intensity. This is not a glitch, but can be difficult to alter exactly. In this case, a good guess will have to do.
A third party tutorial on creating/controlling these, with example vmf's can be found here: