Truncate is much faster because it is something you cannot recover from the transaction logs. Because this is dangerous in the wrong hands, normally only system admins have the rights to do this.
Delete is slower but can be recovered if someone accidentally deletes. Also the delete statement can have qualifiers so that only a portion of the records are deleted. Truncate will wipe out the whole table no matter what.
I personally prefer not to use truncate on a table unless I can easily recover by re-importing the data or if I want to clean out a table that had test records, so that the real records can be put in instead. Believe me you don't want to accidentally truncate the main table that your whole application is dependent on.
Questions about posting. See faq183-874