Escapagem / codificação de URL / HTML

Eu sempre fui confundido com URL / HTML Encoding / Escaping. Eu estou usando PHP, então quero esclarecer algumas coisas.

Posso dizer que sempre devo usar

urlencode: para partes individuais da sequência de consultas

$url = 'http://test.com?param1=' . urlencode('some data') . '&param2=' . urlencode('something else');

htmlentities: para escapar de caracteres especiais como<> para que se seja renderizado corretamente pelo navegador

Haveria outros lugares em que eu pudesse usar cada função. Eu não sou bom em tudo isso, sempre confuso por eles

questionAnswers(2)

yourAnswerToTheQuestion