How do I choose a specific vertex to be extruded with Python?
A bmesh approach.

In as much as the operator calls are written in INFO area, and can be used to make scripts I always recommend using API class methods when possible. 

Here I've created a new object at (1, 2, 3) using a bmesh and the bmesh extrude individual vert bmesh.ops.extrude_vert_indiv(...) which returns the newly created vert at the other end.  For example sake I've added 3 random length branches in random directions. 

Because of the random in all directions will get some rubbish result.  For practical use  some kind of tree data structure.

Added the modifiers using API method Object.modifiers.new(name, type)


a test run

import bpy
import bmesh
from mathutils import Vector
from random import randint, uniform
context = bpy.context
scene = context.scene
me = bpy.data.meshes.new("Thing")
ob = bpy.data.objects.new("Thing", me)

bm = bmesh.new()
root = bm.verts.new()
for i in range(3): # tree branches
    v = root
    for l in range(randint(1, 4)):
        ret = bmesh.ops.extrude_vert_indiv(bm, verts=[v])
        for v in ret['verts']:
            v.co += Vector([uniform(-1, 1) for axis in "xyz"])
        bm.to_mesh(me)

ob.location = (1, 2, 3)
skin = ob.modifiers.new(name="Skin", type='SKIN')
sub = ob.modifiers.new(name="Sub", type='SUBSURF')
sub.levels = 2
scene.objects.link(ob)


Used the extrude operator to match the question.  Could simply add a vertex at next location and use that to create edge.

newvert = bm.verts.new((2, 2, 2))
newedge = bm.edges.new([root, newvert])