Adesso e` una tecnica meno usata, ma qualche tempo fa era obbligatoria.

Una pagina Web e` (a volte) composta di linguaggi differenti, che vengono interpretati da parser diversi.
In particolare oltre al linguaggio HTML si possono trovare altri linguaggi: ad esempio CSS e Javascript (sono i piu` comuni).

Non sempre il parser HTML e`/era in grado di fermarsi quando trovava un tag <style> o un tag <script> e proseguiva con l'interpretazione di un codice che chiaramente non capiva e che poteva dare problemi.
Per questo era necessario che il codice "diverso" fosse incluso in commenti HTML:
codice:
<head>
  ...
  <script ...>
    //<!--
      ... qui il codice Javascript ...
    //-->
  </script>

  <style ...>
    /*<!-- */
      ... qui il codice CSS ...
    /*--> */
  </script>
</head>
Notare che il commento HTML e` sempre inserito dentro commenti JS / CSS rispettivamente, in modo da non far interpretare il codice HTML dal parser JS/CSS

Al giorno d'oggi tutti i brwoser capiscono cosa e` un JS o un CSS (a prescindere che siano in grado di interpretare il codice relativo), per cui la cosa non e` piu` necessaria.

Per completazza, aggiungo che nella programmazione (X)HTML Strict non si possono inserire linguaggi diversi dall'HTML. Se lo si fa occorre inserirlo entro commenti CDATA (la logica e` la stessa, ma la sintassi diversa).