I am not sure I entirely understand your question so forgive me if my answer doesn't quite cover your doubts, but you seem to be asking about the correct workflow for using Dupligroups feature in Blender.
I use them quite often and they are indeed a bit unorthodox, so I'll try and explain my workflow. Since you seem to be using Blender for architecture or Archviz, which also happens to be what I use Blender for, this will hopefully also be helpful for your case too.
Dupligroups are a way of creating bundles of independent objects that are grouped together and can then be deployed as a single object or stored as a library for later reuse. Similar to AutoCad Blocks or Sketchup components I believe (I have used very little Sketchup myself).
Unlike most other programs however group definition and group use are completely separate in Blender, that means you define a group with a set of objects but they aren't 'converted' into an instance of that group, they remain as a separate original you can go back to to modify but don't directly use in your scene.
In much the same way an instance of that group is generally an independent object chosen specifically as duplicator that generally has no other geometric data or geometry associated with.
That being said my workflow generally goes like this:
- In my work file (or even a separate 'library' file if you wish to reuse them later or in different files or across different projects) I usually create a new separate scene exclusively for "group definition" where I create my "group originals". In your case that would be where I would place the window frames.
- Those objects can then be grouped with Ctrl+G and they can belong to several distinct groups at once even (say one window with a handle one without and one with hinges)
- Each group has by default it's origin at the scene's center (coordinate $0,0,0$) but this can be customized to accommodate several group definitions in the same scene but keep their individual origins in a convenient place relative to their participating objects. If you go to the Properties Window > Object Tab > Groups you can set a different origin for each group (use the option Set offset from Cursor for easier adjustment).
- In your actual work scene where you want to use your group instances just access the add menu Shift+A and choose your group from the last menu entry Group Instance.
Group instances are generally used from an Empty type of object by default that doesn't have any mesh data or geometry of it's own. Only exception is if you want to create a non renderable dummy geometry as helper object for snapping or correctly placing the dupligroup in a scene.
By keeping group definition and group use separate you can then avoid trouble with object offsets. You can't really add an object to a group directly through it's group instance in Blender, but you can go back to the original and do it there and have changes propagate automatically to all instances.
Select all newly added objects you want to add to an existing group, then Shit-select an object already in the desired group, making sure both remain selected, but the object already in the group remains the active one.
Then press Ctrl + L > Groups to match the groups from active to all selected objects.
You can also create nested groups, or groups instances inside groups if you wish to have several modular reusable components that are repeated and combined often in different ways.
Hope this helps clarify the use case.