Ciao,
per quanto riguarda il primo problema, nelle textarea la nuova riga viene definita dal carattere '\n', quindi è questo ad essere memorizzato nel database. Questo carattere non viene assolutamente riconosciuto da HTML. io ho risolto il problema in questo modo:

Codice PHP:
$text str_replace("\n","
"
,$row[text]); 
Dove $row[text] è la variabile che contiene il testo ottenuto dal database.
A questo punto se printi a schermo il contenuto di $text nel box delle news, vedrai che il testo va a capo esattamente come hai deciso tu.

Per il secondo problema, io ho risolto in questo modo: sia prima di salvare il testo nel database, sia quando lo mostro nella pagina lo faccio modificare in questo modo:

Codice PHP:
$text=htmlspecialchars(stripslashes($text)); 
htmlspecialchars converte i caratteri speciali di html (come <, ", >, etc.) nel loro codice (es < diventa &lt mentre stripslashes rimuove gli slash di protezione.