NOTE: The below answer no longer pertains to Ansible 2.1+. From the comments:
I realize this is an old post but should anyone still be interested, it's worth noting that this is not true anymore since ansible 2.1. Taken from here: Prior to Ansible-2.1.0, importing only what you used from ansible.module_utils.basic did not work. You needed to use a wildcard import - bouletta
Original Answer
Ansible (prior to version 2.1) will refuse to run if you don't do the import *
business. I'm not 100% certain what magic is being done, but I know some is.
The Replacer is used to insert chunks of code into modules before
transfer. Rather than doing classical python imports, this allows for more
efficient transfer in a no-bootstrapping scenario by not moving extra files
over the wire, and also takes care of embedding arguments in the transferred
modules.
This version is done in such a way that local imports can still be
used in the module code, so IDEs don't have to be aware of what is going on.
Example:
from ansible.module_utils.basic import *
... will result in the insertion basic.py into the module
from the module_utils/ directory in the source tree.
All modules are required to import at least basic, though there will also
be other snippets.