Em complemento a resposta do nosso amigo Maurício Aniche;
Sua Pergunta:
1° Se herdamos atributos e métodos de nossas superclasses, eu sou obrigado a criar os mesmos atributos nas classes subclasse?
Não, você não é obrigado a implementar, se estes atributos e métodos não tiverem sido declarados como obstract, mas se houver atributos ou métodos abstratos então estes sim serão obrigados a serem implementados em suas subclasses.
posso herdar os atributos ou tenho que criá-los? Pq ?
você irá herda-los, mas se quiser cria-los você pode. Porque você pode querer alterar o modo como funciona este método em sua subclasse, e então vc terá em sua subclasse tudo o que tem em sua superclasse, mas com aqueles métodos que você rescreve fazendo resultados diferentes
Espero ter ajudado!