Uma coisa que é importante diferenciar é o conceito de biblioteca e engine/framework:
Inicialmente, pensei que você iria se ater apenas a engines. Por esse motivo, todos os meus exemplos foram dessa categoria. Ou seja, são um conjunto de funções, estruturas, etc. de nível mais alto e prontos para serem usados para a elaboração de projetos de uma certa categoria.
Em contra partida, tanto a SDL quanto OpenGL e SFML são bibliotecas. Isso é, são um conjunto de operações de nível mais baixo que controlam diretamente o comportamento de algumas partes do hardware.
Basicamente, um é alto nível e outro é baixo nível. Mas acho que um exemplo será mais ilustrativo:
Com o OpenGL (uma biblioteca), é possível pintar um pixel na tela com apenas um comando. Provavelmente, a Ogre3D (uma engine) não lhe permitirá fazer isso - a menos, não tão facilmente.
Por outro lado, com a Ogre3D é possível facilmente importar um modelo 3D dentro de uma cena, enquanto com OpenGL será preciso implementar todas as funções necessárias para ler o arquivo do modelo e converte-lo em vértices para serem pintados na tela - sem comentar que o conceito “cena” não existe para o OpenGL.
Acho que deu para ter uma ideia do que estou falando, mas vale a pena pesquisar um pouco mais sobre essas diferenças para deixar tudo claro.
(Inclusive, à rigor, engine e framework não são a mesma coisa, embora sejam próximos)
Dito isso, acredito que uma das primeiras coisas que você precisa decidir é se irá tratar sobre engines ou sobre bibliotecas.
Vinícius
P.S.: Falando sobre bibliotecas, uma que é tão importante quanto a SDL, para não dizer mais importante, é a Allegro.