How to delay execution of execute() function in an Addon?
Normally you can let Blender's layout system draw the properties, but when you want to have an action button on an Operator UI, you have to specify the whole interface. You might even consider writing a bit of Panel code instead of trying to do it all in the Operator.

But if you do want to stick with the Operator only you could augment your current Operator code with. 


an unlocked property (boolean), 
an explicit draw() function, 
replace your current execute() function with something that checks if the unlocked property was set to True yet.


code:

unlocked = bpy.props.BoolProperty()

def draw(self, context):
    scn = context.scene
    l = self.layout
    col = l.column()

    col.prop(self, 'x_pos')
    col.prop(self, 'y_pos')
    col.prop(self, 'z_pos')
    col.prop(self, 'chosen_axis')
    col.operator('mesh.align_verts', text='Mesh Align').unlocked = True

def execute(self,context):
    print (self.chosen_axis)
    if self.unlocked:
        self.update_indiv_vert_pos(context)
        print ("Executed script")
    return {'FINISHED'}




I would not not use an Operator as a replacement for a proper UI panel.