Well … particles is a very complex element. Try to play with Particle-panel in panda3d samples. It is very pratical and intuitive and make for you a .ptf file to insert in your app. There´s no a cockbook, you must explore by yourself.
About a particles low your frame-rate, pay attencion in the pool-size (max amount of particles) , birth-rate (total amound of new particles per seconds, i guess) and lifespan (age in seconds of a life of particle). This have some impact in frame-rate.
About water-effect exists n-ways to do this. You can use animated texture based in photos (see texture-swapping samples in panda)+particles, you can use normal maps (used in lego-games series) with semi-transparent mesh+cubeMapping or use shaders to simulate water. Try what´s is better 4 you.