How to add template objects (groups) from other file?
Here are two example files achieving this:

template.blend



This contains two template groups named template_A and template_B, each consisting of two meshes (Suzanne and Cylinder) and a text object, but different hierarchy. See images


 - In the group "template_A", Text and Suzanne are parented to the cylinder ("root" parent).
 - In the group "template_B", there are no parent-child relations.

addTemplate.blend




in this file, both templates are linked and placed on layer 2. 
A cone object acts as spawner,moves around and reacts on Keys A ("template_A") and B ("template_B"). The script add handles the reactions and sets the string (Question 2).

Note that when template_B is added, the three objects fall apart (they have different translational damping), while in template_A they stay connected (question 1). 

Edit: As Monster pointed out in the comment, you can not move the whole group at once by changing e.g. world.objects["template_A"].worldPosition. Instead - you need to move the "Root" parent (see image above), which can be accessd by e.g. world.objects["template_A"].groupmembers["Cylinder"]. This is related to the additionally added question 3.