O que é R:
Não há nada de muito misterioso sobre R. É apenas uma classe que tem muitas subclasses estáticas, abra-a no eclipse e dê uma olhada (está sob gen /).
Cada membro desta classe é uma de duas coisas: 1) classes finais estáticas ou 2) inteiros finais estáticos que são únicos em relação aos outros membros de sua classe.
Por que é tão enigmático:
é fácil se confundir porque R é gerado automaticamente pela formiga. É enigmático porque você não deve "tocá-lo" manualmente (é claro que pode, mas suas alterações serão automaticamente apagadas na regeneração). Além disso, é enigmático porque às vezes o eclipse importa automaticamente o arquivo R padrão do android (conforme discutido nas respostas acima)
Por que é sempre o primeiro que não pode ser resolvido: R segue exatamente as regras das classes e pacotes Java, não há nada de especial em como o R atua com relação à importação. R será automaticamente colocado no pacote especificado pela entrada do pacote em seu arquivo de manifesto
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="package.which.will.contain.R.and.probably.the.main.package.in.the.application" android:versionName="8.6.2011" android:versionCode="1">
<uses-sdk android:minSdkVersion="13" />
Para ver a qual pacote seu arquivo R pertence, basta abrir a pasta gen / no eclipse (visualização de pacotes). Você verá um pacote listado lá, ele terá o nome que você especificou em seu manifesto. Tente excluí-lo, ele voltará se todos os seus recursos seguirem as regras de nomenclatura corretas e todos os seus arquivos xml seguirem as regras xml corretas e se a construção automática for habilitada no eclipse.
A chave para entender o arquivo R é perceber que ele está no mesmo pacote que as outras classes, embora esteja em um diretório diferente de outros arquivos pertencentes ao seu pacote "principal". Depois de entender isso e entender a sintaxe e a nomenclatura dos arquivos de recursos, é fácil solucionar problemas com o R.