All depends on how much performance/precision you need.
Notice that a pathfinding algorithm is one thing and navmesh is another entirely different thing.
The most popular pathfinding algorithm (and the fastest known) is A*, you may find a very detailed tutorial of how it works here:
- http://www.policyalmanac.org/games/aStarTutorial.htm
A* algorithm is a little complicated, but you will be able to code it yourself without any major issue if you dedicate some time to it. You will also find it coded in a lot of places (my own blog has a C version of it). Most versions are not top optimized, but they may be fast enough for your needs.
About the navmesh, A* works on any graph and navmesh is just a graph very well known for being efficient in the representation of game spaces. It is also pretty complicated to create. There is an opensource program that creates navmeshes, its name is recast, you may find it here:
- https://github.com/memononen/recastnavigation
And a great study of how it works here:
- http://www.critterai.org/book/export/html/2
You should keep in mind that you can use much simpler approachs, such as A* with a grid (which is a matrix telling where your character can move and where it can't). It is a very simple solution that may be fast enough for your needs.
Of your last question, depends on what AI/pathfinding you want to implement. If your AI is a monster that walk to a character, attacks and use a spell with 30% chance per second, and you want to use Heap optimized A* with navmeshs then yes, this will be the worst part. If you want your monster to adapt to 30 different character behaviors, analizing possibilities with heuristics and you plan to use a simple A* implementation with grids, then no, it won't be.