That syntax is for some shells other than zsh and even there, it would be wrong.
.[^.]* matches on file names that start with . followed by a character other than ., followed by 0 or more characters.
That's the kind of syntax you'd need in shells that include . and .. in the expansion of .*.
. and .. are navigating tools used to refer to the current and parent directories respectively. They have no place in glob expansions as globs are tools to generate lists of actual files¹. Still, historically shells have been including them in their glob expansions as they were being reported by readdir().
zsh, like the Forsyth shell and its descendants (pdksh, mksh, OpenBSD sh...) or the fish shell have fixed that and never include . nor .. in the result of filename generation², even in globs like:
$ echo (.|..)
zsh: no matches found: (.|..)
It's also wrong in the general case, as it misses files like ..foobar.
Also note that [^.], though supported by many shell, is not standard POSIX syntax.
In POSIX sh syntax, you'd need:
cp -a ~/.[!.]* ~/..?* .
(where we add ..?* which matches on .. followed by one or more characters, to cover for the ..foobar type of file names mentioned above).
In zsh (and those other shells mentioned above), you only need:
cp -a ~/.* .
Hopefully, that will eventually be allowed/recommended for sh by POSIX and we'll see more other shells follow suit.
¹ On a history note, and according to legend, the concept of files whose name starts with . being hidden originates in a bug in an early version of the ls utility in the 70s which ended up causing all filenames starting with . to be hidden when the intent was only to hide . and ... That bug became a feature when people started to rely on it to hide files
² Bash added a globskipdots option for that in the 5.2 version.