Question: Is saying a cache is a special kind of buffer correct? They both perform similar functions, but is there some underlying difference that I am missing?

Answer: 
It would be more accurate to say that a cache is a particular usage pattern of a buffer, that implies multiple uses of the same data. Most uses of "buffer" imply that the data will be drained or discarded after a single use (although this isn't necessarily the case), whereas "cache" implies that the data will be reused multiple times. Caching also often implies that the data is stored as it is also being simultaneously used, although this isn't necessarily the case (as in pre-fetching and the like), whereas buffering implies that the data is being stored up for later use.

There is certainly a large overlap in both implementation and usage, however.
One important difference between cache and buffer is: 

Buffer is a part of the primary memory. They are structures present and accessed from the primary memory (RAM). 

On the other hand, cache is a separate physical memory in a computer's memory hierarchy. 

Buffer is also sometimes called as - Buffer cache. This name stresses on the fact that the use of buffer is similar to that of cache, i.e. to store data. while the difference lies in the context of its usage. 

Buffers are used for temporarily storing data, while the data is moved from one object to another. 
EX: when a video is moved from the Internet onto our PC for the display buffers are used to store the frames of the video which would be displayed next. ( THIS INCREASES THE QoS, AS THE VIDEO WOULD RUN SMOOTHLY AFTER A SUCCESSFUL BUFFERING PROCESS.) 
EX: another example is the scenario when we write data onto our files. The newly written data is not copied to the secondary memory instantaneously. The changes made are stored in the buffer and then according to the designed policy, the changes are reflected back to the file in the secondary memory (hard disk).

Caches on the other hand are used between the primary memory and processors, to bridge the gap between the speed of execution of RAM and the processor. Also the most frequently accessed data is stored in the cache to reduce the access to RAM.