The below script is attached to 25 game objects, after 1 is destroyed count gets set to 24, then stays at 24 despite others being destroyed.

public class shootable : MonoBehaviour {

public Text countText;

private int count = 25;

void Start()
{
    Debug.Log("Start" + count);
    //count = 25;
    setCountText();
}

void OnTriggerEnter2D(Collider2D other)
{

        if (other.tag == "Shot")
        {
        Debug.Log("b4 " + count);
        Destroy(other.gameObject);
          Destroy(gameObject);
          count--;
        Debug.Log("after " + count);

        setCountText();
        }

        if (count == 0)
        {
            Application.LoadLevel("Level2");
        }
   
}

void setCountText()
{
    
    countText.text = ("Enemies Remaining: " + count.ToString());
}

}

Well if it is attached to 25 objects you have 25 different counts. You got to have a single class which contains the count seperated from all the objects. Then from that script you got, access that class and change the value of the count. Something like

public class GlobalCounter
{
public static int count;
}

and from your Script remove count and replace em with GlobalCounter.count++ or whatever you need.