Apply Transforms on object copies not working
It's because the copies are not on the scene so you can't make them active. To do so the command is bpy.context.scene.objects.link(ob) 

import bpy


obj1c=bpy.data.objects['Obj1']
obj2c=bpy.data.objects['Obj2']

obj1c = obj1c.copy()
obj2c = obj2c.copy()

obj1c.data = obj1c.data.copy()
obj2c.data = obj2c.data.copy()

bpy.context.scene.objects.link(obj1c)
bpy.context.scene.objects.link(obj2c)

bpy.ops.object.select_all(action='DESELECT')

obj1c.select = True
bpy.context.scene.objects.active = obj1c
bpy.ops.object.transform_apply(location = True, scale = True, rotation = True)
obj1c.select = False
bpy.ops.object.select_all(action='DESELECT')

obj2c.select = True
bpy.context.scene.objects.active = obj2c
bpy.ops.object.transform_apply(location = True, scale = True, rotation = True)
obj2c.select = False