htmlspecialchars vs htmlentities quando relacionado ao XSS

Eu já vi muitas respostas conflitantes sobre isso. Muitas pessoas gostam de citar que as funções php por si só não o protegerão do xss.

O que o XSS pode fazer exatamente através de htmlspecialchars e o que pode fazê-lo através de htmlentities?

Entendo a diferença entre as funções, mas não os diferentes níveis de proteção xss que lhe restam. Alguém poderia explicar?

questionAnswers(3)

yourAnswerToTheQuestion