How does Windows resolve hostnames without DNS?

It uses the (ancient) NETBIOS protocol and the Windows implementation of its name service, WINS. If a name cannot be resolved by the DNS servers the WINS server is tried or if it isn't defined a NEBIOS call is made.

Note that some routers include a DNS server and add to it the name each DHCP clients provides. If your router supports this capability, then the DNS protocol is actually being used to resolve the name resolution query.

It resolves the .local names using multicast DNS (RFC 6762) as part of zero-configuration networking.