Yes, both statements copy the contents of a into c, BUT C++ has different kinds of mechanisms that do this.
In the first snippet, both lines are forms of copy construction. That is, T c = a; and T c(a); mean the same thing.
In the second snippet, that's regular assignment. It's distinguished from copy construction because c already existed before that statement. The distinction between initializing an object to a certain value and changing the value of an object after it has been created is important for some types.