If you need a good pathfinder, use this one :
http://arongranberg.com/astar/features#It is well documented, open source and the free version features are fine for your needs (you have to use the grid graph).
PoolManager will be only useful for memory optimization, to avoid garbage collection, it is a must have however
If you use Unity-2D, juste pack the textures of your objects in the same big texture, and create the sprites that you need using this same big texture. You can use the NGUI atlas maker to create this texture for you!
For the targeting, split the update over frames, don't do it for all towers at the same time, put the enemies into Octree. There are a lot of possible optimization right there. For me I use Physics to detect when an enemy enters or leaves the area of my towers, I save it in a list and I do precise targeting only for those items.
And for the GUI of the game, of course use NGUI :p