Iterating vertex groups in Python
Ugh, I figured it out, didn't realize that 'active' was different than 'selected' in the context of edit mode. 

Here's the updated script:

import bpy 
import random as random
import time

dup = bpy.context.selected_objects[0]

list = []

for i in range(0,4):
    bpy.ops.object.select_all(action='DESELECT')
    dup.select_set(True)

    bpy.ops.object.duplicate()

    obj1 = bpy.context.selected_objects[0]

    obj1.location[0] = i*4
    obj1.location[1] = 0
    obj1.location[2] = 0

    list.append(obj1)


for obj in list:
    bpy.ops.object.select_all(action='DESELECT')
    bpy.context.view_layer.objects.active = obj # Set active object
    obj.select_set(True)

    bpy.ops.object.editmode_toggle()
    obj.vertex_groups.active = obj.vertex_groups[0]
    bpy.ops.mesh.select_all( action = 'DESELECT' )
    bpy.ops.object.vertex_group_select()
    bpy.ops.transform.translate(value=(0, 0, 4.32424), orient_type='GLOBAL', orient_matrix=((1, 0, 0), (0, 1, 0), (0, 0, 1)), orient_matrix_type='GLOBAL', constraint_axis=(False, False, True), mirror=True, use_proportional_edit=False, proportional_edit_falloff='SMOOTH', proportional_size=1, use_proportional_connected=False, use_proportional_projected=False)
    obj.vertex_groups.active = None
    bpy.ops.object.editmode_toggle()