Это магические методы которые позволяют в том числе и переопределение операторов. Например вы можете реализовать методы __len__, __getitem__, __setitem__ и т.д. в своем классе и эмулировать последовательность, обходить ее циклами, обращаться по индексу и диапазону к элементам.
Что касается len, он эквивалентен:
def len(x):
return x.__len__()
Таким образом использование магических методов напрямую не несет преимуществ.