Keep getting .poll() Context is Incorrect Error even though I set the correct context
Set action to None

Would simply use

if ob.animation_data:
    ob.animation_data.action = None


rather than 

bpy.ops.action.unlink()


The former only needs reference to an object.

If you want to remove all animation from an object, actions, drivers and NLA then use

ob.animation_data_clear()


The error from question is caused by clearing the action on the object on first iteration and henceforth having no action to remove, it doesn't poll.