There's no such thing as "template function".
Your second code excerpt is just... a function.
A function template generates functions, as the article mentions. Andrzej's use of "template function" is his own terminology which he notes is not used by the C++ standard itself.
Overload resolution is needed when there is more than one possible candidate when a function call is made. The compiler needs to determine which function it is actually calling; there is only one right answer. Generally, you can think of it being the more specific possible function that is chosen when looking at different templates/functions, but the exact rules are much more detailed.
I think the article you linked does a good job at boiling down the essentials.
The latter is not even considered a template at all, since the boost::optional template class is already instantiated with bool. Therefore, it is just a regular function that takes a regular class instance as a parameter.