pythonのインポートの仕組みとしては、
ppaulさんのおっしゃる通り、公式ドキュメントにも記載されています。
ただ、分かりにくいので、ここにざっくりと書かせていただきます。
組み込み関数(printやopen, sumなど)は__builtin__モジュールが自動的?にインポートされることによって、使用できるようになります。通常、ここにアクセスすることはありません。また、pyファイル等が実在しないこともあります。
予約語(if, forなど)についても同じようなものです。
次に、標準パッケージ(tkinter含む)についてですが、これは多くの場合ファイルが実在します。(built-in(sysなど)を除く)
これと同じようにサードパーティ製のパッケージもファイルが実在します。
pythonのimport文は、そのプログラムに設定されたsys.pathに記載されているディレクトリor zipfileから、パッケージを検索します。パッケージ名のファイルを見つけた時には、そのファイルの中身を__all__に従って見えるようにしてインポートします。ディレクトリの場合は、init.pyを最初に読み込み、ファイルを見つけた場合と同じようにインポートします。また、__init__に特に設定がない場合、同ディレクトリのファイルをすべてインポートします(2次元の名前空間で)。
from は、ディレクトリまたはファイルから特定のクラスをインポートしたいときに使います。
例えば、tkinterから、ttkのみをインポートしたければ、
from tkinter import ttkとかけます。
また、from文の後のimportにはが使用できます。その場合、fromの後のパッケージ内のすべてのクラスをインポートします。
最後に、これはimportの後に使うものですが、asがあります。"~"としてインポートできます。
ただし、from文においてを指定した時は、使えません。
こんな感じに使います。from tkinter import ttk as tttk