Of course you never really need an event structure, it just makes UI programming quite a bit easier and cleaner. A few versions ago, the event structure did not even exist!
If you want to close the panel from the main VI, just close the panel by "invoke node" to the VI reference, for example.
Properly designed, a "big program" is just an assembly af many little programs, each fully debugged and with clear functionality, all tied together with a clean toplevel VI. It shouldn't be something 5x5 screens big with remote parts duct-taped together with local variables.
What do you consider a big program?
A good place to start would be the
nt>LabVIEW Style Guidelines.