It's all there. First line of
free show that buffers take up 124, cache 543; 543 + 124 = 667, 1000 - 667 = 333. And this is what the second line of
free (actually 332) shows.
That's the difference between "free memory" and "available" memory. Buffers / cache can be freed on a moment's notice, so they don't really count as "not available" memory in the System Monitor, but they also are not, strictly speaking, free memory.
From the point of view of the user, "available" memory is more important. Linux will max out the buffers / cache to speed up the system, but that does not mean that your mem is full and that system slows down due to lack of available memory.