The differences between an active GameObject and an inactive GameObject are:
- The inactive GameObject's attached MonoBehaviours won't receive most Unity messages. This includes update calls (FixedUpdate, LateUpdate, Update) and any messages sent by SendMessage or BroadcastMessage.
- An inactive GameObject won't interact with physics.
- An inactive GameObject won't show up in the array returned by Object.FindObjectsOfType(GameObject).
You can still directly reference an inactive GameObject, as Statement mentioned, and you can directly call methods on it and its components. You could even directly call Unity message methods if they're public, though that might get confusing. In summary, the difference between inactive and destroyed is the difference between hiding your computer in a closet with spotty Internet access and chucking it into a black hole.
GameObject.active isn't the quickest property on Earth, but setting it should be much faster than Destroying and Instantiating a new GameObject, and it won't waste any memory (unless you use SetActiveRecursively, which consumes a tiny bit of memory to get the enumeration it iterates over.)