You'll need them if you want to create your own container types.
Like if you want to do stuff with a bunch of values, but none of the built-in containers - like list, dict, set - does exactly what you want.
Then you can design another container type.
And you want to use it conveniently, using operators, +, * ir something, or indexing it with [ ]...
In most cases magic methods allow you this: define what happens if you use a specific syntax.