What's order of declaration got to do with anything?
The declaration of a specialization must always follow the declaration of the template which is being specialized (14.7.3/3). In Example 2, (c) is an explicit specialization of both (a) and (b). In Example 3, (c) is only an explicit specialization of (a), since (b) follows it.
When overload resolution is being performed, it doesn't matter whether a template has explicit specializations or not. In both examples, overload resolution selects the template (b) over (a) because it's more specialized (14.5.6.2). In Example 2 it doesn't actually matter which one is selected, because (c) is a specialization of both templates, so it gets called no matter what. In Example 3, it does matter. Because (b) wins overload resolution and (c) is not a specialization of (b), it follows that (c) doesn't get called.