Нужно понимать что программа выполяется последовательно, строка за строкой. Если в строке есть вызов функции, обрабатывается функция потом управление возвращается обратно к основному телу скрипта. Это как если бы вы начав читать статью переходили на каждую ссылку читали что там, а если есть ссылки там, то еще дальше вглубь а потом возвращались обратно. Это т.н. обход в глубину.
1. В точке останова исполнение останавливается и управление передается отладчику. Т.е. отладчик (программа) и соответственно программист может повлиять на ход выполения программы в тот момент когда программа остановлена. Как только мы "отпускаем" программу, она выполняется до конца, в том случае если мы никаких дополнительных точек останова не указали. Или она будет выполняться до следующей точки останова, где мы снова получим управление.
2. Функция будет выполена, но мы не будем заходить в нее, и обходить пошагово, а перейдем сразу к следующей строке.
3. Одиночный шаг он идет точь в точь по следу выполения программы. Если есть вызов другой функции, мы переходим туда, а оттуда дальше каждый цикл будем прходить до самого конца и так далее. Это самый мелкий шаг при отладке. Конечно на практике никто не станет проходить весь скрипт одиночными шагами (см. также 2.), а только отдельные его части которые нужно рассмотреть так сказать "в замедленном действии".
4. Мы зашли в функцию, но нам не интересно пошагово ее обходить а нас интересует лишь ее результат. Так мы промотаем функцию до того момента когда она соберется вернуть результат и сможем глянуть, что она вернет.