pow(x-1) -- рекурсивный вызов функции.
Что это такое?
Это значит что вычисление функции pow(x) приостанавливается до тех пор, пока pow(x-1) не вернет результат, которая в свою очередь зависит от pow(x-2) и т.д.
Представьте что перед вами лежит стопка бумажек, вам нужно найти какую-то (ваше условие, прекращающее рекурсию). Вы берете один лист, кладете его рядом (другая стопка, в вашем коде это конкатенация строки), потом берете следующий и т.д. В итоге у нас меняется порядок стопки, она переворачивается.
Вызываем функцию,
перед тем как вернуть результат функция должна сформировать оный, в вашем случае вы должны собрать строку. Что бы ее собрать мы снова вызваем нашу функцию и для конкретно этого уровня рекурсии все замирает и ждет когда функция вернет результат. Ну и там переходим в начало.