1. The particles will of course go down, as you are setting their speed in the particle function. You can try a "vec_rotate(p->vel_x,your.pan);" right after the instruction p.vel_z = random(-1*Gesch);
2. No, you can't. At least as far as i know. But you can correct the angle with ent_bonerotate.
Always learn from history, to be sure you make the same mistakes again...