Meta Stack Overflow is not, actually, a meta site in the api sense.  It tracks reputation, and has a distinct set of user accounts from Stack Overflow.

Image hashing isn't really compelling, as you'd have to be polling `/sites` quite frequently to make use of it, which you shouldn't do.  Rather, just pull the image down once a day* or so.

Clarifying the relationship between meta<->parent is already [status-planned].

You could also get clever and only pull images when something has happened that *might* signify a logo change.  Things like: name changes, site_url changes, and state changes.  Naturally the path to the logo itself changing would be a strong signal to invalidate your cache.

Per your edit, meta sites are always in the same effective state as their parent site *by definition*.  So, Gaming Meta is in `open_beta` but Meta Server Fault is `normal`.  This only really matters for `closed_beta`, as it restricts access to sites.

<sub>*As [systempuntoout][1] pointed out, you should be setting the If-Modified-Since header for those resources.  Fetching them is outside of the API, so all the usual HTTP image caching tricks are valid.</sub>

  [1]: https://stackapps.com/users/51/systempuntoout