Like the linked wikipedia article says, .local is used by mDNS(zeroconf/bonjour/avahi/etc.), so you might see weird stuff if you use it for a "normal" DNS environment.
AFAICT current "best practice" for private networks is to use a private subdomain of your real domain. Say, .internal.example.com.
Google registered the .dev gTLD for their internal use. So I've been doing the same, hijacking all requests for the .dev gTLD and serving up my own zones.
The annoying part is that Chrome treats valid (g)TLDs differently. If you type test.dev in your browser it will try to resolve test.dev. But if you type test.loc, it will google for test.loc.
There are a lot of workarounds sure, but try explaining that to everyone else.
AFAICT current "best practice" for private networks is to use a private subdomain of your real domain. Say, .internal.example.com.