Python has many built-in data types including numbers, strings, lists, tuples, and dictionaries. It also supports user-defined data structures like classes. Data types store values without semantics while data structures organize data to allow efficient operations. Python uses dynamic typing so variables can reference values of any type. Some key differences between mutable and immutable objects are that mutable objects like lists can be modified after creation while immutable objects like strings and tuples cannot be changed once set.