Зачем используются константные методы?
Для того же что и константные ссылки в аргументах функции. Для наглядности. Для API это довольно критично, что пользователь видя функцию с ходу понимает, что от неё ожидать. Так же const-метод вызывается у констант. C++ создавался когда программирование было либо промышленным, либо исследовательским. Дома "под пивко" не особо кодили. Поэтому напридумывали, ориентируясь сразу на людей с опытом.
К тому, что сказали выше пример из Qt:T* data ()
const T* data () const
Его можно переделать в таком виде:T data ()
const T& data () const
Первый метод в обоих примерах вызывается когда объект обычный, а второй, когда константный, на пример передается в виде константной ссылки в функцию.