I went through several different phases working on my game, so here are a few ideas and what I ultimately did:
first, you could use multiple particle objects line up across the top of the screen. you can mess with the X and Y offsets on the particle object itself to do the effect you're looking for, I think.
for keeping them outside, I was having the particles destroy themselves on collision with solids. you can use collision filters if you want them to go through certain things. this requires you to actually generate objects rather than particles, and ultimately it created a ton of slowdown.
what I ended up doing was rather than destroying the rain, just have the raindrop teleport itself back to the top of the screen and start falling again. this fixed the processing speed, which I think was mostly just from rapidly destroying and creating new raindrops. randomizing the height it teleported to gave it enough variation to not look super organized, which was really important. I actually ditched the particles entirely and just spawned objects in a loop based on how heavily it was raining (using wait commands to ease the rain in, and randomness to destroy the drops when the rain was supposed to stop). this also meant I can make platforms wet and water plants with rain or have it do other effects. my rain is sprites with bullet behavior.
I tried a lot of effects, and I think ultimately changing the angle too much looks weird and unnatural--rain mostly falls in a grain in a localized area. think of looking into a streetlight in the rain at night--you can see that the rain is mostly similarly angled, so minor variation is okay but major variations is not so good.