As it is stated in the link you refer to, those particle systems have their limitations.
As it is also mentioned, sometimes, stencil pre-pass is used to eliminate unused pixels.
Now to your questions:
How would you create new particles, upload them to the GPU and how'd
you determine what particles to draw?
This can be done in pixel shader, you first read render target which stores particle info and determine if it is dead. If yes you just write to the output RT initialized particle (as usually done on the CPU as well). Of course, you are not able to add more particles in this case.
There are more possibilities in DX10/100 however. Using geometry shader, more sophisticated techniques can be used. E.g. geometery shader can read buffers data which store particle info and based on this output triangles or not. But you'll have to anyway pass through the whole array.
However you can split this in two passes: 1) generate triangles and output them to Stream Output stage buffers. 2) Use DrawAuto to shade only the previously output data.
So, basically yes, you can make decisions inside your shader about which particles to draw.
There are other more GPGPU like techniques, and it can be done using just DX9. E.g. After some time most of the particles may be dead, so in order to not waste time on them you can sort your buffers (render targets). For such a basic case like dead/alive Histopyramid method will suffice. This can be especially useful for the effects like explosions, when many particles quickly die.
because uploading new particles would basically require locking the
rendertarget(s) and manipulating its (their) pixels, right?
Yes, if you really want to do it on CPU. But you do not always need to, if you can generate your particles on GPU. Again in DX10/11, you can use Stream Output to generate your particles. In vertex shader you may use SV_VertexID semantics to determine current vertex ID and generate particle based on this ID. You can also generate your particles in pixel shader by output data to render target. This all depends on what you are doing. Some techniques could be more suitable than other.