Draw points on screen with bgl? (python)
short answer:

bgl.glPointSize(5)
bgl.glBegin(bgl.GL_POINTS)

less shorter answer:

Open template operator_modal_draw.py

In draw_callback_px(self, context) I call my function

DrawByVertices("points", verts2d, [0.5, 1, 0.1, 0.5])


where verts2d are screen coordinates [(screen.x, screen.y), ..] in my case derived from vector3 like this

from bpy_extras.view3d_utils import location_3d_to_region_2d
#...
verts2d = []
for v in bm.verts:
    new2dCo = location_3d_to_region_2d(context.region, \
                                       context.space_data.region_3d, \
                                       v.co)
    verts2d.append([new2dCo.x,new2dCo.y])


.

def DrawByVertices(mode, verts2d, color):
    bgl.glColor4f(*color)
    bgl.glEnable(bgl.GL_BLEND)

    if mode is "points":
        bgl.glPointSize(5)
        bgl.glBegin(bgl.GL_POINTS)    
    elif mode is "lines":
        bgl.glLineWidth(2)
        bgl.glBegin(bgl.GL_LINE_LOOP)

    for x, y in verts2d:
        bgl.glVertex2f(x, y)

    bgl.glEnd()
    bgl.glDisable(bgl.GL_BLEND)
    #restore defaults
    bgl.glLineWidth(1)
    bgl.glColor4f(0.0, 0.0, 0.0, 1.0)

    return


Result is colored points drawn on screen over 3d vertex coordinates.