Is there a subtle difference between "somebody" and "someone", "anybody" and "anyone"?
Solution 1:
There is little or no difference between the -one and -body variants.
However, there is a major difference between somebody and anybody--anybody is one of the "negative valency" words in English, which is required when the main verb of the sentence is negated.
I haven't seen anybody. [Correct]
! I haven't seen somebody. [Incorrect]
Conversely, in sentences in which the main verb is affirmative (not negated), the preferred pronoun should be somebody and not anybody.
I saw somebody in the hall. [Correct]
! I saw anybody in the hall. [Incorrect]
In subject position, you should prefer somebody when a particular person is implied, although you don't know who it is. Anybody can be used when you have no particular person in mind.
Somebody called me on the phone. [Correct]
! Anybody called me on the phone. [Incorrect]
? Somebody can come to the party. [Not exactly incorrect, but very strange--it implies that there is a single, unnamed person that can come to the party.]
Anybody can come to the party. [Correct]
Solution 2:
Here's what Garner's Modern American Usage says:
The two terms are interchangeable, so euphony governs the choice in any given context. In practice, anyone appears in print about three times as often as anybody.
Solution 3:
While M-W doesn't provide any hints on difference between the two, my understanding is that someone is used more for hinting at a particular person, for sarcasm or otherwise.
E.g. I don't think I've ever heard the phrase "special somebody", as opposed to "special someone". Somebody sounds more generic.