A buffer overflow occurs when a program tries to store some amount of data in a location which cannot contain that amount of data. For example, trying to store an array of 10 integers in an array with room for 5 integers will cause a buffer overflow.
Buffer overflows are common in C/C++, specifically in the strcpy function. This function copies the data from one string (char array) into another. It is often abused by clever hackers to either crash a program or to inject their own instructions onto the execution stack.
The "extra" data copied over from the larger array doesn't magically disappear. The "overflow" refers to that data overwriting data on the stack. While this will often just crash the program (or computer), those clever hackers mentioned above may happen to know enough about the program structure to be able to insert their own low-level computer instructions to execute arbitrary code on the machine.