I probably could've done a better job with the actual docs descriptions on these (PRs welcome ;) )...
win_domain is for "ensuring that the given domain exists", creating a new forest/domain on the target machine if not.
win_domain_controller is for switching a host between domain controller and member server status on an existing domain.
win_domain_membership is for switching a host between a workgroup member and a domain member.
The domain admin creds for the DC and Membership modules are to specify existing domain admin credentials used to join/leave the domain or promote to a DC (since you can't connect with domain creds to a workgroup host, and the DC promotion module doesn't require that you're already a member of the domain). When creating a new domain, all admin accounts that exist on the host are automatically domain admins for the new domain.
These modules are nowhere near exhaustive WRT the capabilities for creating a new domain, they just scratched an itch I had for doing this under our CI. We're currently not testing domain anything, something I'm hoping to change for 2.4, but it requires "throwaway" domains, which we now have the capability to create.
-Matt