The first example does not work when you go to delete the pointer. The program either hangs when I add the null terminator or without it I get:
Debug Assertion Fai
In your first example you are allocating some memory and pointing to it with the "at" variable. When you do
at = "tw"
you are effectively re-pointing the char * to a constant character string. This causes you to leak memory. When you go on to delete "at" you are attempting to delete stack memory.
strcpy goes through each character and copies their values to the new memory you allocate. This is also known as a deep copy.