How can I make an object use it's animation action at a specific frame in Blender Python script?
I think Strips in the NLA are more suitable for your purpose than Actions.
Actions are containers for FCurves/keyframes.
Strips on the other hand are containers for Actions. Strips can be moved comfortably to the desired position on the timeline.
In the Action editor &quot;Push down&quot; you action as a new strip to the NLA editor. In the Nla editor you can drag the newly added strip anywhere on the timeline.
From here on you could toggle and move your strips on the timeline with Python.
Here's a quick sketch:
for track in bpy.context.active_object.animation_data.nla_tracks:
    for strip in track.strips:
        if strip.action == bpy.data.actions[0]:
            start_frame = 10
            strip.frame_start = start_frame
            strip.frame_end = (
                strip.action_frame_end - strip.action_frame_start + start_frame
            )

To add an action as a strip to the Nla, use:
start_frame = 10
strip = track.strips.new(bpy.data.actions[0].name, start_frame, bpy.data.actions[0])

Relevant API Docs:
https://docs.blender.org/api/current/bpy.types.NlaTrack.html?highlight=nlatrack#bpy.types.NlaTrack
https://docs.blender.org/api/current/bpy.types.NlaStrips.html#bpy.types.NlaStrips
https://docs.blender.org/api/current/bpy.types.NlaStrip.html#bpy.types.NlaStrip