Wireframes and prototypes can show what a web page or app is supposed to look like, but they don't show what it's supposed to do. Functional specifications are a description of what is supposed to happen in response to actions taken by a user - clicking on this, dragging on that, and so on. You can think of them like a blueprint that you give to the developers, so that what you have in mind is how the finished product actually works.
We use them in-house any time we're working on a system that is more interactive than your average website. But they're especially useful if someone else is going to be doing the development work. Saying "the user gets a list of options and chooses one" may sound straight-forward, but there are a dozen different ways to do that in an app, and there's a good chance the developer's choice wouldn't match your own, unless you tell them exactly what you want.
This is a short section of the functional specifications we developed for a web app; the full document was about 4 1/2 pages.