Pathfinding is a pretty solved problem... as mentioned in almost every answer here, some variation on A* is going to be what you use.
The bigger challenge to me, is how you want to represent your path. Using a grid, pathnodes, navmeshes, hierarchical grids or other complex structures, etc.
I don't have any specific references in mind, but exploring AIGameDev will give you all kinds of ideas as to what's out there.
Just remember that each representation has its pros and cons; it's not about finding the 'best one', it's about finding the one that is the best fit for your gameplay.