let と let* で二つに分ける理由ってなんですか?

ついでにもう一つ、macroexpand-系を使って、
マクロ動作を勉強してるんですが、
*Message*バッファには省略形のリストしか表示されないです。
全部理解するには、edebug-defunでデバッガ起動するしかないのですか?