例えば「He must have been drunk(彼は酔っ払っていたに違いない)」と言う文は「『彼は昔(=発話よりも前の時点で)酔っ払った』と、今話し手が判断している」と言う意味です。
従って「行ったに違いない(と、今話し手が判断している)」と言う意味です。
少し専門用語を使うので、意味が分からなければ、スルーして頂いても良いですが、英語の助動詞は「様態認識法助動詞」と「根源的法助動詞」の2種類の使い方があり、must, may, canについては使い方がこの2つで明確に異なります。
「しなければならなかった」ならhad toになり、「must have done」は「〜したに違いない」の方でしか解釈されません。
なお、「had to」を用いるのは、小説のナレーションのように、全て「…だった。…だった。……だった。」と過去形で話される文脈に時制を合わせる意味で使い、
should have goneだと「行くべきだったのに…(行かなかった)」と言う意味合いになります。
shouldは「〜するべきだ(根源的)」「〜するはずだ(様態認識)」の両方とも完了形で過去にするので、こればっかりは語彙ごとにおさえていくしかないでしょう。