> is there any difference between calling func2() by name and calling func2() through a pointer to it?
Functionally no.
There's probably a couple of clock ticks difference in performance, but its hard to say which would be quicker in any given implementation. You'd be hard pushed to ever see a visible difference between the two.

> is memory allocated by the compiler in the same way?
Yes
You can call the same function directly, and via a pointer in the same program, and the same thing will happen in both cases.

> do you gain anything in using function pointers instead of calling by name?
Nope - stack space usage is the same