The User Guide has a lot on Selection and keyboard, but here are the basics:
There is OnGotSelection and OnLostSelection overrides at the GoObject level. Probably not what you want, though.
GoView.Selection returns the GoSelection object, which lets you see what is selected.
GoView also has events for selection changes: ObjectGotSelection, ObjectLostSelection.
For handling key input, look at the Classier sample for DoKeyDown(Object sender, KeyEventArgs evt).
GoDiagram is NOT thread safe. Don't be manipulating GoObjects from threads.
Not sure what you're doing here, but this seems kind of odd. Just using the Selection as the "collection" of objects without actually creating a GoGroup may be simpler.