The primary difference between headshots and portraits is that headshots are much more standard and portraits are much more experimental. There are four primary differences between the two:
These differences can be found in the lighting, the angle of the shots, how far out the shot is taken from, and the coloring. Additionally, there are usually more Photoshop effects added into one than the other.
Headshots are shot fairly close in and are very standard. Especially business shots. Typically headshots will be in color, however every once in a while you'll see them in black and white. However, no special effects are added to the shots. Most headshots use very soft lighting that covers the entire face and doesn't make any harsh shadows. Additionally, most headshots have a relaxed and realistic expression. You usually don't want a crazy expression in a headshot because it will look fake or forced.
Portraits, on the other hand, are different in all aspects. First of all, they can be shot very close in or very far out and they can be shot from low or high angles. The framing of portraits can be however you want because there are no rules. Typically, portraits will use many more Photoshop effects in them, and although they might be black and white, the contrast might be extremely strong, or they might have an advanced color effect. For portraits, you can use soft lighting or you can use hard lighting, it really depends. Most head shots are taken with high key lighting, but portraits can also be taken with very low key lighting, where the lighting is dark and dingy. It all depends on what the look is that you're going for in the shot, since portraits are extremely artistic as compared to headshots. Additionally, in portraits the expression on the subject can be anything from an extremely funny and crazy face to something extremely scary and dark.
Again, to reiterate the difference between headshots and portraits:
Portraits are extremely experimental. Headshots are not.