What is difference between Buffering and Spooling with respect to Operating System
There's not really a significant difference.  Spooling uses buffering.  Buffering can be used for other purposes, too.

The second quote you include in your question (I/O overlap, etc.) looks to me like it's not very helpful.  The key question is whether you have one buffer per process (job) or a shared buffer that is common to all jobs.  If you have one buffer per job, obviously they can overlap.  If you have a single buffer for all the jobs, then if one job starts writing to it, other jobs might need to be locked out (depending upon how you implement the buffer).

Don't worry about these words.  Memorizing the names and the terms "buffering" and "spooling" is not important.  What's important is the concept: the idea of storing some data in a temporary space in memory, so that when the recipient is finally ready to use it, it's all there for them in one spot.