In advance, I'd say I'm learning reverse engineering newly. Indeed, there are some questions to be asked.
First of all I would ask : In assembly level of the applications which use GUI ,how things like forms,buttons,etc are represented ? For example, when we can find out a button is clicked and things like that ? In all languages which support GUI they use same API for buttons or forms or ... ?
And there's an another question in the other side of reversing(from Export tables addresses): Consider the example of a program which has two export address (for example start and a debug checker) which they're declared as public in the disassembled approach, so how we can figure out which one would be executed at first ?