Usé SDL y SFML para mis proyectos de juego. Usé SDL para un juego terminado, un juego de tetris, y usé principalmente SFML como una capa de ventanas para experimentos de sombreado. Desde mi experiencia, tendría que decir que SDL es lo que dice. Es una capa simple de medios directos, que abstrae los datos con los que trabaja su medio (sonido y video) a un nivel con el que puede interactuar a través de diferentes plataformas. Eso es "todo" lo que hace.
Debido a eso, generalmente tiene que mezclarlo con algunas otras bibliotecas, especialmente SDL_mixer, SDL_gfx y SDL_image, que proporcionan la funcionalidad que todos necesitan para crear juegos.
Todas estas bibliotecas también están destinadas al lenguaje de programación C, y siguen sus convenciones. No es que haya nada malo en eso, pero si quieres un enfoque orientado a objetos sobre cómo interactúas con io, entonces básicamente tienes que construir esa capa tú mismo.
SFML viene con todo de inmediato. Tiene sonido, tiene video, tiene mezcla, tiene límite de fotogramas y está orientado a objetos. Si eso es lo que quieres, te recomiendo que lo hagas. SFML también tiene una capa de abstracción para algunas de las funciones básicas en opengl (específicamente beginShape / EndShape y pixel shaders). No creo que SDL tenga algo así, solo un método para fusionarse con él.
PD No para alejar la conversación de C / C ++, pero si no estás usando ese lenguaje por alguna razón en particular y quieres una más fácil, siempre hay pygame. Que es básicamente SDL + para Python.