Olá Luís Felipe,
Na verdade o próprio nome já ajuda a entender melhor do que se trata.
Enquanto que o Accept diz respeito aos formatos de dados que são aceitos, o Content-Type reforça exatamente o tipo que está sendo utilizado naquela requisição.
O cabeçalho Accept é usado pelos clientes HTTP para informar ao servidor quais tipos de conteúdo eles aceitarão.
O servidor enviará de volta uma resposta, que incluirá um cabeçalho de Content-Type informando ao cliente qual é o tipo de conteúdo realmente retornado.
É importante também se atentar para o fato de que no HTTP existem tipos de requisição, como POST e PUT na qual o cliente está efetivamente enviando dados para o servidor, e nesse caso o cabeçalho Content-Type informa ao servidor quais são realmente os dados (e, portanto, determina como o servidor os analisará).