In wordpress execution of each and every page is executed in the form of an array.What is does it creates a global $wp_filter array and each array element contains a function reference.
for eg.We all must have used wp_footer action……so internally wordpress treat it like this
[wp_footer] => Array (  => Array ( [wp_print_footer_scripts] => Array ( [function] => wp_print_footer_scripts [accepted_args] => 1 ) ) )
So when we do add_action()……………It basically adds one more element in the global array and when we do do_action………..a function call is triggered.
So add_action is to add more and more elements in global array and do_action is to execute that function.Filters also work in the same way.