What you have described about your servers being authoritative for all subdomains is normal unless you decide to delegate subdomains to other servers. Even that, that delegation is controlled by the servers all the way back to the root. Thus, I'll focus on the rest of your question:
Also, how does the interaction between a client and a nameserver work when the primary nameserver fails to resolve a domain (two cases:  ns is down  the record does not exist)? Does the client then contact the secondary nameserver for an attempt at resolution? (in both cases?)
If a nameserver is down, then no response will be given and the client will try other servers listed in the record. Note that primary and secondary servers have meaning for client machines and have meaning for setting up the server (master / slave is more accurate for server side), but as far as your actual NS records, no ordering is applied.
If a record doesn't exist, then the authoritative servers will return a
NXDOMAIN response. Caching servers will return that same response on subsequent queries as long as the query hasn't timed out based on the
SOA record's timeout value. Note that this is not always well-respected.
If an authoritative server simply isn't reached then an alternate response is given, typically a SERVFAIL. See http://stackoverflow.com/questions/73433/does-a-caching-nameserver-usually-cache-the-negative-dns-response-servfail