I thought there was almost no difference, but to be exact, there is.

In kanji, it may be easier to understand the gap.

a fighting man or a serving man

bushi: 武士
武 (bu) means ” a fighter with a weapon “
 
士 (shi) means ” a man “
 
So in a strict sence, bushi means ” a fighting man with a weapon “
 
samurai: 侍
侍 means “one who serves.” Samurai served to a noble or a imperial family.
 
People (including Japanese) tend to call a man with katana swords ” samurai”.

 
But it would be more accurate if we call him ” bushi “.
 
Even japanese people are not aware of these difinitions, so nobody points out which word you should use.

Horumon sounds gross? but worth trying
Shinkansen remarkable speed and punctuality
eshaku
Japanese people do not bow so often. Instead, we do eshaku.
parting couple
Otsukaresama and derivations so versatile but can be rude.
pitcher
Matsuzaka will do a good job in the U.S.
What is enryo? Is it still needed in Japan?
parting couple
( Too many ) Japanese phrases meaning good-bye casual to polite
Amakusa Porcelain Stone