要するに過去形は単に過去を過去として述べるに止まり、現在完了形は「過去の動作を述べて現在の状態を説明する」のである。
例えば “I ate breakfast.” は「朝食を食べた」という過去を過去として述べるだけですので、もうお腹が空いているかもしれません。一方 “I have eaten breakfast.” は「朝食を食べた、そしてその行為の効果が今も続いている⇒まだお腹はすいていない」ことを含意します。

現在完了形には過去を示す副詞を伴うことはできませんが、現在を含む時期をあらわす副詞は使うことも可能。
この場合過去形を使うか現在完了形を使うかは話者が状況をどう捉えているかによります。選択の基準は,砲茲蠅泙后
“I have received a letter from him today.” と聞いたら、著者なら「毎日彼から手紙が来るが、今日はもう届いた」と理解するでしょうし、“I received a letter from him today.”なら「今日彼から手紙がきた」と理解するでしょう。

“When” で始まる疑問文に現在完了形を使うことは不可。
“When has he arrived?” は不可で“When did he arrive?”としなければならない。

“just now”は現在完了形には使えない。
“just now”は現在形で使われると「ちょうど今」の意になり、過去形で使われると「少し前に、ついさっき」の意になります。口語では“just now”を現在完了形でつかう人は現実にはいると思いますが、避けた方が無難です。

“He has gone to America.” は「彼はアメリカに行ったーアメリカにいる」、 “Have you ever been at/to Kyoto?” は「京都へ行ったことがあるか」の意。
著者は現在完了形の意味を「完了」「経験」「継続」のどの意で捉えるかは「動詞の性格」と「文脈」によると思っています。「go」とか「come」「become」は動作の「成り行き」を示す使い方ができるので上記のような意味になるのだと思います。“He has gone to America.” は一部のアメリカ人は「経験」の意で使っているようです。