O Normal é sim, desenvolver uma compilação em separado para cada tipo, tamanho, enfim para cada peculiaridade que pode causar transtornos para o usuário.
Eu tenho esse problema, pois estou construindo alguns componentes, e você quando está construindo componentes, precisa informar o tamanho preferencial e o tamanho mínimo, mas o ideal seria pegar isso dependendo do tamanho do seu display já que o componente deveria estar bem visíviel na tela.
Bom, o que eu tentei, mas que pra mim não funcionou é, criar uma classe Canvas, dentro do componente, e passar o Display.setCurrent pra ela, pra que depois disso eu pudesse pegar os valores da altura e largura da tela.
No seu caso, como é uma aplicação você pode fazer isso, por exemplo criando uma tela de Spash na sua aplicação. Essa tela deve extender de Canvas. Depois que você exibir a sua tela, você pode salvar a informação da altura e largura, retornadas pela sua tela e usar isso no seu sistema todo.
A Classe Canvas, tem métodos pra pegar a altura(MinhaClasseCanvas.getHeight()) e a Largura(MinhaClasseCanvas.getWidth())
Para jogos é um pouco diferente. O que se costuma fazer , quando não se quer desenvolver várias compilações, é uma imagem central do tamanho do menor display e nas bordas uma cor neutra, que quando essa imagem fosse apresentada em outras dimensões dos displays você vizualiza a imagem com a borda preenchendo o que ficaria de fora, mas essa solução eu não acho muito viável não.
Abraço.