¿Cómo la función miembro constante puede cambiar los datos de un objeto?

Otra pregunta sobreconst el uso de palabras clave en C ++ (soy un principiante en C ++, intenté encontrar una respuesta en SO - demasiadas respuestas pero no pude encontrar una).
Pregunta 1: en la siguiente función miembro

template <class T>  
bool BinTree<T>::insert( Node<T>* & node, const T& val ) const  
{
    node = new Node<T>(val);
}

Puedo cambiar los datos de una clase que se pasan como referencia. ¿Qué pasa con una función miembro siendoconst? Es verdad que estoconst ¿Previene que los datos solo cambien explícitamente, pero permite cambiarlos a través de una referencia?
2. ¿Podrías confirmar mi entendimiento?

func( const Node<T>* const & node ) {...}

En esta función firma el 2º.const significa puntero const y el 1-stconst significa Nodo const (por lo que el nodo es una referencia al puntero const para el nodo const)?

Respuestas a la pregunta(1)

Su respuesta a la pregunta