Assuming you have an enemy class and a list or array of enemies in your game class, put a bool in the enemy class called 'isInRange'.
//somewhere in your enemy class
public bool isInRange(vector2 towerPosition, float maxWeaponRange)
{
bool result = false;
if(Vector2.Distance(enemyPosition, towerPosition) < maxWeaponRange) result = true;
return result;
}
then.... in the game or tower class' update method:
foreach(enemy en in enemies)
{
if(en.isInRange(towerPosition, weaponRange))
{
//toggle shooting on or branch to shoot sequence
}
}
for the health question, store a float or integer in the game class and in each update method, check it for value, if it is < 0, run the game over sequence. Every time an enemy scores a hit against the tower, decrement the stored float or integer slightly.