да, конечно. А вот output_buffefing влияет очень просто:
обычно некоторые действия (установка header, старт сессии) необходимо выполнять до того, как данные будут отправлены браузеру.
То есть, если ты делаешь echo - это означает, что сервер должен уже отправлять данные. при первом echo сервер отправит header'ы, поэтому их установка после echo бессмысленна (новые не будут отправлены).
Что делает output_buffering? переводится как "буферизация вывода" или "буферизация исходящего потока". проще - то что ты отправляешь на вывод при помощи echo и подобных функций сначала буферизуется - отправляется в память. Размер буфера имеет максимальный размер, по достижении которого происходит отправка, в противном случае отправка происходит после отработки скрипта. Соответственно, при включенной буферизации заголовки не сразу отправляются к браузеру, а только перед фактической отправкой данных (превышен размер буфера, конец работы скрипта). И именно поэтому, буферизация позволяет менять заголовки даже после echo, print и т.п.