If a non-deterministic Turing machine runs in f(n) space, then why does it run in 2^O(f(n)) time?
why the base is '2' and not something like 'b' where 'b' is the number of types of symbols of the Turing machine tape?


Because it does not matter in the sense that $2^{O(f(n))} = b^{O(f(n))}$ for any positive $b &gt; 1$.

Using the popular set-theoretic understanding of the big $O$-notation, we have
$$\begin{align}
2^{O(f(n))}&amp;=\{2^{g(n)}\mid g(n)\in O(f(n))\} \\
&amp;=\{\left(b^{\log_b2}\right)^{g(n)}\mid g(n)\in O(f(n))\} \\
&amp;=\{b^{h(n)}\mid \exists g(n),\ h(n)= (\log_b2)g(n),\ g(n)\in O(f(n))\} \\
&amp;=\{b^{h(n)}\mid h(n)\in O(f(n))\} \\
&amp;=b^{O(f(n))}\end{align}$$

By the way, there is no need to assume $f(n)\ge n$. For example, all above hold when $f(n) = \lceil\sqrt n\rceil$ or $f(n) = \lceil\log_2n\rceil$.