Наследование в ООП — стоит ли широко применять?
Я не гуру, но в реальный проектах рулят "Рефакторинг" М.Фаулера, "Совершенный код" Макконнела, "Приемы объектно-ориентированного проектирования" Э. Гамма.
Наследование, не наследование - определяется задачей и сложностью кода. Что-то красиво и изящно делается наследованием, где-то оно наоборот всё усложняет.
Привет. Реальных проектов указать не могу, но наследование нужно применять, когда нужно расширение класса, как вида. Например: от класса Животное наследуются классы Собака, кошка и т.д. Также следует помнить о интерфейсах (java/c#) или множественном наследовании (c++,etc), которые расширяют возможности класса. 
Неплохо бы уточнить конкретную ситуацию для примера или язык программирования. Однако...
Скажу про Java, а в комментариях подскажите для всех ли языков такое используется:
Надо понимать, что во время создания объекта (оператор new, допустим - new ChildClass() ) сначала вызывается конструктор класса ChildClass. Если ChildClass является наследником другого класса, например ParentClass, то конструктор ParentClass также вызывается при создании объекта наследника (ChildClass). Вероятно, по этой причине не советуют делать длинные линейки наследования. 
По поводу общего объекта - любой класс является наследником какого-либо общего корневого класса (например, object).
UPD: да, кажется, для всех ЯП такой же принцип работы конструкторов:)