You are seeing examples from two different layers of SQLAlchemy.
The core layer (select) typically deals with tables directly, and is sometimes more verbose about constructing queries. The orm layer (session.query) typically deals with mapped classes and provides some conveniences for joining and filtering.
Either one is fully capable of performing complex queries.
The core layer can be more appropriate for larger queries, at the expense of a less expressive results than the full mapped classes the orm provides.
Typically, it is easier and more beginner friendly to write applications at the orm layer, and drop to the core layer only when needed. I would advise reading through both the linked pages to familiarize yourself with both and decide which is appropriate for you.