Am I safe mixing types in a Python list?
No problem, you can store any type inside a list unlike in the "olden days" when other languages had arrays that only wanted one type of data stored in them.
Since lists can also store other list, and other compound data structures, along with other object references, processing or iterating through the list may become a bit more complex due to possible multiple layers, than just going through an array in a simple single level iteration. This is also related to shallow and deep copying.
If the code processing the lists is aware of this, I can't think of any problems due to this ability to store different things in a list.
The language is fine with you mixing types in a list, but you should know that the Python culture might frown on it. Tuples are usually used when you have a known collection of mixed types, and different indexes have different semantics. Lists are usually used where you have a uniform sequence of varying length.
So your data would more conventionally be represented as:
data = [
("name1", "long name1", 1, 2, 3),
("name2", "long name2", 5, 6, 7),
...
]
To put it more succinctly: tuples are used like C structs, lists like C arrays.