>>17
const 付きの変数は初期化子が定数式のときは定数式として使える規則なのでそのときは constexpr との差はほとんどない。
そうでない場合 (初期化子が定数式でない場合) は const は単に書き換えられない変数というだけで定数式としては使えなくなる。
constexpr は初期化子が常に定数式であることを要求し、そうでない場合はエラー。
(より厳密な用語で言えば不適格。)

あとはシンタクス的な違いがちょっとある。
const int* p = &a;
と書いたときは p が指す先の型が const int で p 自体には const 性はない。
constexpr int* p = &a;
と書いた場合には p が指す先は int で、 constexpr は p 自体にかかっているという解釈になる。

>>19
C++ にグローバル変数なんて分類はないし、関数スコープでも const 付き変数の初期化子が定数式だったら定数式として使える。
再度強調しておくがマクロと同列に考えるのはやめてくれ。
字句的な規則と式評価の規則は全く別のレイヤなので結果的な動作が似て見えたとしてもメカニズムの話には持ち込むべきではない。