delete borra registros.
truncate digamos que hace una especie de formateo.
una diferencia notable entre ambas es en el uso de un campo auto_increment.
con delete, el auto_increment continúa con el valor a seguir... con truncate este vuelve a ser cero.
http://www.conclase.net/mysql/curso/...p?sen=TRUNCATE
saludos