The files you give BIND tell BIND what to return for queries (authoritative), or where go to resolve them (non-authoritative). It will return any address you give it.
Yes, you can have a BIND running on your local network resolving names for your LAN that consist of private IPs. This BIND does not have to be accessible to the Internet at large for that function to work.
Yes, if the instance of BIND is accessible via your NAT router it will return those IPs if the server is queried. A BIND meant for private use only that is publicly accessible can leak details of your network.
Book examples typically use private IP ranges to prevent people blindly copying examples and causing undue traffic to innocent third parties - also, running a DNS server on a LAN that's using IP ranges in a private range is also not uncommon.
The DNS server on your home network won't be accessible by anyone unless:
Your static, public IP is registered with a global root zone DNS server, which identifies that public IP as an authoritative zone for a given domain. Specifying a private IP could not be used here.
You convince someone to use your publicly accessible DNS server (which will be problematic but not impossible if your ISP gives you a dynamic IP). For this to resolve IPs for any domain other than your own you would have to set up your BIND to use a global DNS as a forwarder (basically forwarding all locally unresolvable DNS lookups to another server such as OpenDNS). They would also get your private IPs which would not work on their local network unless by coincidence. This is a silly idea (unless you really want to join two LANs via a VPN or something esoteric) and generally not what you want to do.
The file above will work but likely not be useful to you unless you really want to be able for programs to lookup via DNS ns1.example.org
and get the IP address 192.168.182.55 and so forth.