Primeiro, sobre os tipos dos Campos: NTEXT (bem como TEXT) é um campo que aguenta até, aproximadamente, 2GB de informação. Ele é próprio para estes tipos de dados, aonde vc salva MUITA coisa e não pode (ou não fica legal) particioná-las.
A diferença de TEXT e NTEXT é que o NTEXT ( e os outros campos que começam com "N" como NVARCHAR) são unicode. Um campo unicode utiliza 2 bytes para codificar um único caracatere, aumentando a possibilidade de mapeamento de 256 (caso do ASCII) para 65 mil e qquer coisa.
Agora sobre os mitos. Não, não tem problema utilizar uma string normal para salvar dados neste campo, mas você tem que ver as limitações do tamanho da string com o tamanho do dado que você quer enfiar nela. O Campo suporta 2GB, o que não quer dizer que uma variável do tipo string do VB tb suporte. É legal você montar uma precedure para trabalhar com input e output de dados por que você tem a possibilidade de montar as suas regras no servidor de dados, e não fixo dentro da programação. Fora que torna a execução do código muito mais rápida. Ou seja, é bom fazer, mas não é mandatório.
Ah, outra coisa, você não concatena uma campo do Tipo TEXT com outras variáveis. O SQL Server não deixa. Tipo "SELECT TITULO + ' : ' + CAPITULO " . Supondo que um dos dois seja um TEXT da vida, o SQL SERVER vai te barrar.
E por último, mas não menos importante, sobre o ASP e os dados sendo salvos:
Se você vai salvar os dados com ASP, recomendo a utilização do SERVER.HTMLENCODE, pois esta função transforma todos os caracteres estranhos em ASCII. Isso evita diversos problemas.
Legal é esclarecer que O SQL SERVER não vai formatar seus dados. Você deve fazê-lo da forma que lhe aprouver. Se quer salvar de uma forma que você utilize o <pre>, então simplesmente mande salvar. Se quer com caracteres ASCII, utilize o Server.HTMLEncode. Você escolhe a forma que você quer uma vez que sua página ASP é que vai montar a sua string de INSERT.
Bom, espero ter ajudado
Abraço