Primeiro, Texture vs TextureRegion: Quando você faz algo como Textura t = nova Textura (caminho), você está carregando isso na GPU. Além disso, você deve carregar energia de 2 texturas. Você pode trabalhar com outras resoluções (Texture.setEnforcePotImages = false), mas é recomendável usar o pow de 2.
Agora, o TextureRegion, pega um "pedaço" de um Texture, não importa sua dimensão. A vantagem de ter uma textura e várias regiões de textura dessa textura é que você NÃO carrega todas as regiões na GPU.
Como você pode estar pensando, quando você deseja desenhar com o SpriteBatch, é muito mais eficiente usar o TextureRegion em vez de várias Texturas, desculpe, meu inglês não é bom o suficiente. Aqui está uma boa explicação: Textures TextureRegion & SpriteBatch
Agora, você deseja usar o TextureRegion e uma única imagem com resolução de 2 com todas as planilhas e imagens. Você precisa criar TextureRegions com todas as coordenadas e dimensões? Você precisa abrir a tinta para contar pixels? Nããão, você não. Você pode usar algo como TexturePacker . Ele irá empacotar todas as texturas em uma imagem E criará um arquivo .pack com as dimensões e coordenadas de todas elas.
O resultado será algo como isto:
Em vez de criar uma Textura, crie um TextureAtlas, como este:
Agora, criar suas TextureRegions seria tão simples quanto:
(Observe que o nome da região é o nome da imagem original sem a extensão).
O Sprite contém as informações de geometria, cor e textura para desenhar sprites 2D usando o Lote. Isso significa que você pode girá-los e mover-se facilmente. Eu criei minha própria classe Entity e não preciso da classe Sprite. Você provavelmente faria o mesmo. Não acho essa classe realmente útil.
A classe de imagem é herdada do Actor. Isso significa que você pode adicioná-lo a um estágio. Faz parte do pacote Scene2D. Se você é novo no libgdx e não conhece este pacote, essas informações são suficientes para você sobre esta classe. É um tópico realmente interessante, mas não para responder nesta pergunta.
Espero que ajude :)