1. Point sprites are just a bunch of RenderStates that you need to set.
Code:
Device.SetRenderState(D3DRS_ZWRITEENABLE, FALSE)
Device.SetRenderState(D3DRS_POINTSPRITE_ENABLE, TRUE)
Device.SetRenderState(D3DRS_POINTSCALE_ENABLE, TRUE)
Device.SetRenderSrare(D3DRS_POINTSIZE, FtoDW(1.0))
Device.SetRenderState(D3DRS_ALPHABLENDENABLE, TRUE)
Device.SetTexture(0, WhateverTexture)

'//Render using DrawPrimitive, with a primitive type of
'// D3DPT_POINTLIST
Device.SetStreamSource(0, myVB, Len(VertexSize))
Device.SetVertexShader(myFVF)
Device.DrawPrimitive(D3DPT_POINTLIST, 0, 650)

Device.SetRenderState(D3DRS_ZWRITEENABLE, TRUE)
Device.SetRenderState(D3DRS_POINTSPRITE_ENABLE, FALSE)
Device.SetRenderState(D3DRS_ALPHABLENDENABLE, FALSE)
That all should work, I just pulled it out of my head =).

2. I think you need to use D3DCREATE_PUREDEVICE, but im not sure (my card doesnt support it).

3. You've got me. Again, my card supports jack...

4. Its a CAPS check. Use Device.GetDeviceCaps(DevCaps), and then look in the DevCaps.PixelShaderVersion. Check the SDK documentation for more info.

Z.