Distance to Viewport View-Camera
Snapping an empty to the closest vertex of a cube. "Closest" meaning closest to the viewer.

First, loop through the areas or obtain a SpaceView3D by other means. The type of this area returns VIEW_3D. It's first space will be a VIEW_3D space. This space has a region_3d property, which has a perspective_matrix property.

The perspective_matrix appears to be the perspective view transform matrix. Mutliple a 3D Vector by the matrix, to get its position relativ to the camera.

Here is a working sample.

import bpy

# function returning the closest vertex of 
# param 'ob' is an object in the scene with vertices
def get_closest_vertex_position(scene, ob):
    # get an area of type VIEW_3D
    areas = [a for a in bpy.context.screen.areas if a.type == 'VIEW_3D']
    if not len(areas):
        return

    region3d = areas[0].spaces[0].region_3d

    # get the view matrix
    view_mat_inv = region3d.view_matrix

    if region3d.is_perspective:
        vertices = [[v, (view_mat_inv*v.co).length] for v in ob.data.vertices]
    else:
        vertices = [[v, -(view_mat_inv*v.co).z] for v in ob.data.vertices]

    # use a lamda expression to get closest vertex
    return min(vertices, key = lambda x: x[1])[0].co