1 - I would do this by giving the AI an instance variable called 'state' and on created set the 'state' to 'moving'. Then have pathfinding logic if AI state is 'moving'. This also helps with 3 and 4.
2 - Have a global variable that counts up every x seconds. When you spawn an AI, subtract the price from the global variable
3 - It depends how they are fighting, if it's done by overlap you can say if 'state' is 'fighting' and not overlapping an AI, then set state to 'moving' i.e. continue pathfinding
4 - You could detect distance between ranged AI and an enemy or have an invisible sprite around the enemy and detect an overlap of ranged AI and the sprite, then stop pathfinding, set the ranged AI state to 'attacking' instead of 'moving'
They are just generic answers and you will likely come across bugs because tower defense can be complex with the logic.