Se eu desenvolvo um aplicativo com o android 2.2 ele vai rodar em aparelho com android 4, já que o android é superior vai ter todas as funcionalidades do 2.2
ou
Se eu desenvolvo um aplicativo com o android 4 ele vai rodar em aparelho com android 2.2.
A incompatibilidade é gerada com os features que você usa, que estão somente disponíveis nas versões mais novas ou utilizar features deprecated ( O ADT se encarrega de reclamar sobre isso )
Tomando como exemplo o padrão de interação com o usuário chamado Action Bar, ela não existia na versão 2.x foi adicionada na 3.x. Logo se você queria utilizar essa feature a api minima era da 3.x. Para resolver esse problema e alguns outros eles lançaram alguns jars adicionando funcionalidades as versões antigas as quais são android-suport-v4 e android-suport-v7).
Sei que é complicado pegar uns projetos e estudar, mas recomendo você dar uma olhada no código do aplicativo Google IO Schedule 2013, é o aplicativo que foi feito para a agenda do evento Google IO, é open source e que aplica vários conceitos de compatibilidade, usabilidade e etc… quem sabe não te ajuda.