#10 que no copias a un char!
Un char = un carácter = un byte. EN UN BYTE NO TE CABE UNA CADENA. En un char de puede caber 'a', 'z', '1', pero no "123456789". El número de teléfono no es un char, son NUEVE CHARS.
No tienes un char. Tienes una serie de chars. Una serie de caracteres. Una cadena de caracteres.
char* = puntero a char. Es un puntero que apunta al primer char de tu cadena. Eso no significa que tengas un char. Tienes 10 chars (los 9 del teléfono + 1 del \0 final como tú mismo apuntas) sólo que C no entiende lo que es una cadena (ni C, ni tu ordenador.)
Para ello, C tiene que trabajar con un puntero que apunte al primer carácter de tu cadena, ya que es su única forma de saber que ahí hay AL MENOS un char (de ahí que acabe con \0, es necesario porque indica a C "aquí se ha acabado la cadena, soy el byte 0, por lo tanto soy el último char de la cadena".
Las funciones que trabajan con cadenas no hacen más que recorrer esa serie de caracteres, usando el puntero para situarse al principio de esa cadena y luego aumentando el puntero para acceder al resto de caracteres... hasta que encuentra el char \0 y dicen "hey, vale, aquí se ha acabado".
De hecho piénsalo: cuando defines una cadena, tú no defines un char, sino char[10] por ejemplo. Eso son 10 chars, no un char. Aunque la variable es de tipo char, en realidad es como si tuvieras 10 variables char (char[0], char[1]...) Lo que pasa es que en C no puedes pasar los 10 chars de golpe, por eso sólo pasas la referencia al primero.