Let me start by apologising. My comments were snarky and I shouldn't've said what I did. It's now too late to edit them, but perhaps it's better to let them stand anyway.
With regards links, no, I don't have any links to pages explaining the technology. The best I have is this one:
http://www.eskimo.com/~billb/amateur/vortgen.html
There's a lot of stuff scattered around, but I've never found a single, coherent treatment.
The reason smoke/air/fluid rings happen, in short, is this. Throw a lump of air forward. The air in front of it gets pushed outwards to let the lump through. As the displaced air streams around the outside, it drags on the lump, causing the front face of the lump to follow the displaced air. That makes the front flow around the outside, and then the back comes forward through the middle to replace the air at the front, and hence you get a toroidal circulation.
(in truth it's more complex, but that's the basic idea)
Here's an animation that shows the idea.
http://www.amasci.com/wing/smring.html
That site has much that's poorly expressed, so don't take it all too seriously.
Making air/fluid rings is pretty easy, just throw a lump at a sensible speed. They turn up everywhere, but there are some surprises. Send a smaller, faster ring after a larger, slower one. The faster one catches up and goes through the larger one. The larger one even gets bigger to let it through, then shinks, catches up and goes through the other. You can get "leap-frogging" smoke rings, which is cool.
http://serve.me.nus.edu.sg/limtt/video/leapfrog.mpeg
All the basic fluid-dynamic ideas are Newtonian in principle and you can treat air as incompressible, near frictionless marbles flowing around.
Until you can't.
ADDED IN EDIT:
Collisions between smoke rings are interesting, both head-on and oblique. Most of the time you get a spray of smaller rings, each made half from one, half from the other. Or so I'm told - I'm still hoping to get the opportunity to explore that situation sometime.
HA! Found video:
http://serve.me.nus.edu.sg/limtt/video/collision.mpeg
http://serve.me.nus.edu.sg/limtt/video/Oblique_collison_fron...
http://serve.me.nus.edu.sg/limtt/video/Oblique_collison_top....
http://serve.me.nus.edu.sg/limtt/#Video_Gallery
Finally, bit puzzled as to why this comment is getting down-modded at the moment since I'm trying to contribute interesting stuff. My guess it's the same person who down-modded the grandparent to this comment, and wants to punish it further. I'll live with that - it was more snarky than I intended, and inappropriate for HN. We all make mistakes.