The global object contains information about variables in the global execution context(window) like globally available variables and function declarations.
The activation object is a special case of variable object for functions. So it contains the formal arguments of the function itself, default 'arguments' object, local variables and local function declarations.
Execution Context Stack
The above image visualizes execution stack pertaining to the sample code. When 'function4' is invoked then all the nested functions will be invoked sequentially. The interpreter will push each execution context on to the stack. So when 'function4' is invoked the execution stack will have 'function1' since it is the last one to be invoked. This means that the inner most function will complete executing first so when 'function1' is executed its execution context is popped of the stack. Then the top of the stack will have execution context for 'function2' and when it complete execution then its execution context will be popped of the stack as well and 'function3' will be at the top. This goes on until 'function4' complete execution and it is also popped of the stack. 'Global Execution Context' always remains on the execution stack.
The above execution stack represents the scope chain for each execution context for all functions in the sample code. Scope chain for 'Global Object' only has one member which is itself. When 'function4' is invoked then the interpreter will create a scope chain having itself as the member and the root as 'Global Object'. Similarly when 'function3' is invoked then interpreter will create its scope chain having 'function3' at the bottom superseded by 'function4' and the root being 'Global Object' context. This will go on until 'function1' is invoked so its scope chain will have all execution contexts going back to 'Global Object'.