Usei SDL e SFML para meus projetos de jogos. Usei SDL para um jogo finalizado, um jogo de tetris, e usei principalmente SFML como uma camada de janela para experimentos de shader. Pela minha experiência, eu diria que SDL é o que diz. É uma camada simples de mídia direta, que abstrai os dados com os quais sua mídia (som e vídeo) trabalha para um nível em que você pode interagir em diferentes plataformas. Isso é "tudo" que faz.
Por esse motivo, geralmente é necessário misturá-lo com algumas outras bibliotecas, principalmente SDL_mixer, SDL_gfx e SDL_image, que fornecem a funcionalidade que todos precisam para criar jogos.
Todas essas bibliotecas também se destinam à linguagem de programação C e seguem suas convenções. Não que haja algo errado com isso, mas se você deseja uma abordagem orientada a objetos sobre como você interage com o io, basicamente precisa criar essa camada por conta própria.
O SFML vem com tudo pronto para uso. Tem som, vídeo, mixagem, captura de quadros e orientação a objetos. Se é isso que você quer, eu recomendo que você faça isso. O SFML também possui uma camada de abstração para algumas das funcionalidades básicas do opengl (especificamente beginShape / EndShape e pixel shaders). Eu não acho que o SDL tenha algo assim, apenas um método para mesclar com ele.
PS: Não afaste a conversa do C / C ++, mas se você não estiver usando esse idioma por qualquer motivo específico e quiser um idioma mais fácil, sempre haverá um jogo de pygame. Que é basicamente SDL + para Python.