The Entity class stores the given template name, owner and location of an entity and assigns an entityID. Instances of this class (with the position using the tile coordinate system) are converted by ScriptConversions.cpp to the Entity struct defined in source/graphics/Entity.h and passed to MapReader.cpp.
A Group tests if a set of entities specified in the constructor can be placed and potentially places some of them (typically all or none). The location is defined by the x and z property of the Group instance and can be modified externally. The Group is free to determine whether, where exactly and how many entities to place. The Constraint to test against and the future owner of the entities are passed by the caller. Typically Groups are called from createObjectGroup with the location set in the constructor or from createObjectGroups that randomizes the x and z property of the Group before calling place.