Essentially each point in the buffer will be the center of a new billboard sprite (two triangles). Does this mean I need to use a geometry shader? (never used one before).

You can but you don't have to. In addition to sending down a POINT for each sprite and using geom shader to do POINT-to-QUAD, you can send down a QUAD where all of the verts are at the same point, and then just use the vtx shader to displace the vertices to the appropriate size.

And then (as mhagain mentioned) -- in either case -- you can choose whether to use geometry instanced draw calls or normal non-instanced draw calls.

There's an obvious tradeoff in all of this of course. With the instancing (or 4 vertex) approach there are certain calculations that you'll need to do 4 times per-sprite instead of just once; however having the GS stage active will impose some extra overhead of it's own (and this is true even if the GS is just pass-through) - using a geometry shader can therefore be actually slower, despite the appeal of having less data. Unfortunately there is no single answer to "which is the best" that applies in all cases, so you really need to profile and consider your hardware requirements: using a GS requires DX10 level hardware, instancing requires SM3 level (and some SM2 supports it), just sending all 4 verts should work on anything.

So far, though, I haven't gotten any rendering. One difference from the code above is that I am using a texture. Is there any problem to using GL_TEXTURE_RECTANGLE for the texture in this case? So far the only other textures in my code are ortho-rendered quads, so I have been using this texture type and all my other texture loading code uses it.