Python é uma linguagem de programação orientada a objetos. Diferentemente da programação orientada a procedimentos, onde a ênfase principal está nas funções, a programação orientada a objetos enfatiza os objetos.
Objeto é simplesmente uma coleção de dados (variáveis) e métodos (funções) que atuam sobre esses dados. E classe é um modelo para o objeto.
Podemos pensar na classe como um esboço (protótipo) de uma casa. Ele contém todos os detalhes sobre pisos, portas, janelas, etc. Com base nessas descrições, construímos a casa. Casa é o objeto.
Como muitas casas podem ser feitas a partir de uma descrição, podemos criar muitos objetos a partir de uma classe. Um objeto também é chamado de instância de uma classe e o processo de criação desse objeto é chamado de instanciação . Primeiro, você não está passando parâmetro algum, a sintaxe parece remeter a isto mas é apenas a forma do Python de indicar qual é a classe que você está herdando.
Em determinado momento (Python 2.2 e 2.3) houve uma mudança no modelo que a linguagem implementa as hierarquias chamado de "novo estilo de orientação a objeto". Desta forma Python passou adotar um modelo já adotado por algumas outras linguagens, em que todos os objetos devem herdar de uma raiz única que garante a existência de determinados membros em todos os objetos. Esses membros existem na classe object, portanto esta classe deve ser sempre herdada direta ou indiretamente - quando herda de outra classe que já está herdando a object.
Assim unifica a tipagem, o que é um grande facilitador tratando os tipos built-in de forma uniforme.
Algumas linguagens até fazem isto de forma automática, mas além de exigir compatibilidade como estilo antigo ou clássico, o jeito pytônico de codificar é sendo explícito (eu acho isso incoerente com a tipagem dinâmica, mas whatever), então só olhando este ponto é coerente ter que declarar a herança em todos os casos.
Claro que ainda é possível usar o estilo antigo, mas diversos recursos mais novos não funcionarão porque eles esperam contar com estes membros nas classes.
No Python 3.x só o novo estilo deve ser usado. Em geral, não há mais problemas de não-declaração no object, já que ele se tornou implícito (esquisito, né?). Entretanto, é recomendado que o faça não só para melhorar a legibilidade, mas para facilitar um downgrade do código usado.
A mudança trouxe o super(), os descritores e slots. Além disto houve uma mudança na forma de resolução de métodos.