Intel CET protects against Return Oriented Programming, not buffer overflows per se. Its job is to make sure that each RET instruction returns to the same address that its corresponding CALL instruction came from, and that's it. To do this, the hardware maintains a memory section called the "shadow stack" that is out of reach of the program itself. Each CALL instruction pushes the appropriate return address onto the shadow stack, and each RET pops the top value off the shadow stack and crashes the process if that value is not equal to the return value on the actual stack.
Return Oriented Programming is a way to get around DEP (or NX) technology. Since with DEP you can't just inject executable code any more, you can instead use ROP to overwrite return addresses and string together fragments of the program's own code in an order that makes it do your bidding.
Buffer overflows are used to inject payloads into a process's memory space, and those payloads can certainly be ROP payloads. But there's no fundamental relation between buffer overflows and Intel CET.