How does Android OS do DNS name resolution?
How DNS queries made by a program are being resolved isn't specific to an OS, but depends on the resolver library the program is using. DNS resolvers have traditionally been part of OS's standard C library e.g. Bionic on Android, libcmt on Windows, glibc, musl, dietlibc, uClibc and others on Linux. Not all C libraries use the same approach to resolve host/domain names. While glibc and alike provide complicated but highly configurable mechanisms like Name Service Switch, others just rely on hosts and DNS queries to upstream nameserver as configured in /etc/resolv.conf. Android's resolver (1, 2) looks up cache, hosts and DNS:

&quot;DNS lookups are centralized in the netd daemon to allow for system-wide caching, while apps call functions (such as getaddrinfo) in Bionic. The query is sent over a UNIX socket to /dev/socket/dnsproxyd to the netd daemon, which parses the request and calls getaddrinfo again to issue DNS lookups, then caches the results so that other apps can use them.&quot;

DNS server address is either received through PDP context on Mobile Data or through DHCP on Wi-Fi (also possibly to set manually) or the hard-coded value 8.8.8.8 is used. Since Android 9 Private DNS (DNS over TLS) may also be configured in Settings. It's also possible to set DNS and domain name using ndc resolver setnetdns command. See more details in How to configure DNS properly?.

dnsmasq log always shows that the DHCP server DNS suffix [home] has been appended

.home suffix is being provided by your DHCP server (router?) to Android as part of DHCP request (code 15). Android's DHCP client asks server for option 6 (domain name server) and option 15 (domain name), which are then forwarded to C library (_resolv_set_nameservers_for_net) through DnsManager, NetworkManagementService and netd.
On Linux DHCP client (e.g. dhcpcd) modifies resolv.conf itself or uses a program like resolvconf which is dedicated to manage resolv.conf. nameserver keyword defines DNS server and search defines search list for host-name lookup (DHCP option 119 or 15). Android uses default values hard-coded in different header files other than those received from DHCP or set manually.
Windows's DHCP client and DNS resolver support option 15. Additional configurations which are honored by DNS Client service (dnscache) and library can be made through Network Connections or Group Policy Editor or Registry Editor.

Is this a difference of name resolution in Android compared with Windows - that eventually Android OS WILL try to resolve an unqualified domain name (bare hostname) to an IP address?

As far as I have seen this is almost standard behavior for Linux libc's. Android's DNS resolver code is also based on NetBSD - another Linux-like operating system. A single-label unqualified name is first tried with DNS suffix appended, then tried without suffix 4 times (see &quot;options attempts:n&quot; for resolv.conf). For multi-label name the order is reversed while a FQDN (with trailing .) is never tried with suffix. On Windows you can append dot to unqualified name so that it's treated as FQDN. It's possible to set it as default behavior by adding dot (.) to &quot;DNS suffix for this connection&quot;. See also for Multi-Label Name Queries.

I am learning about how Windows does name resolution and need to know how Android does it

As stated in the start, name resolution might not be persistent across whole OS. On Android, for instance, Firefox or Chrome will be depending on Bionic resolver while some busybox ping (or even some native libraries included with GUI apps) will be trying to read resolv.conf and make DNS queries directly.
Also network troubleshooting tools like ping and getent rely on OS's internal resolver libraries like NSS, while DNS diagnostic tools like nslookup, dig and host act as independent DNS clients - they don't read hosts file and may not honor resolv.conf in its entirety. dig provides commandline arguments to (not) use options set in resolv.conf, and similarly Windows nslookup has its own built-in resolver.
So even on same OS you can't expect same DNS resolution behavior when using different GUI/CLI programs because they could be using different libc and/or different resolver and/or different configuration.

RELATED:

How to ping a local network host by hostname?