Does This Code Make Me Look Obfuscated?

Your code may perform faster if (and this is unlikely) large memory copies are optimized by your computer. In other words, it may be faster to copy a bunch of characters at a time than each character individually. However, this is pretty unlikely. There is one serious flaw in your code that you should be aware of. According to the C specification, calling strcpy() when the source and destination strings overlap in memory is undefined. This means that on certain compilers this could trash your string, write into bad memory, crash the process or any other of a variety of unpredictable things.

Your teacher's code will work correctly, personally, I try to avoid using continue. The Azure Monk's code example works as well, but uses pointer math, which I also find hard to read. The following is about as readable as I could make it:

int i = 0;
int j = 0;
while( str[ i ] != '\0' )
{
    while( str[ j ] == ' ' )
    {
        j++;
    }
    str[ i++ ] = str[ j++ ];
}

// note: at this point j - i will give the
// number of whitespace characters removed