As far as I know, it's just a compiler directive to resolve names. The alternative would be to fully qualify everything everywhere, which quickly becomes a syntactical inconvenience.
I.e. the following two examples should be identical in bytecode:
import foo.bar.*;
var MyClass;
Vs.
import foo.bar.MyClass;
var MyClass;
The difference being of course that the compiler will need additional directives to resolve additional types in the same package, i.e.:
import foo.bar.MyClass;
import foo.bar.MyOtherClass;
var MyClass;
var MyOtherClass;
Vs.
import foo.bar.*;
var MyClass;
var MyOtherClass;