The WMS standard allows the client to request an arbitrary region. If the client wants tiles, it can makes its requests in a tiled pattern, but the server has no way to know that's what's happening and if the server stores the map as tiles of its own, it has no way to let the client know what the tile arrangement is.
OSGeo came up with two ways to deal with this. One is to extend the WMS protocol with extra information so that a compliant client can send requests that line up correctly. This was termed WMS-C.
The other is TMS, an entirely new protocol that is specifically designed for tiles. In particular it uses integer indices for the tiles rather than requiring the client to request a bounding box that aligns with a particular grid.
Eventually the OGC, who came up with the original WMS spec, decided to make a tile protocol and the result was WMTS. It's like TMS in that is tile oriented with integer indices, but it also supports some additional features from WMS that TMS lacks such as Dimensions and GetFeature. It's also much more complicated than TMS.
Pre-rendered tiles can be served up using any of the three protocols and there are tile servers that support all three, some acting as caching proxies in front of conventional WMS servers (As in the common pairing of GeoServer and GeoWebCache)
WMS-C and TMS are mature but less official in some people's minds since they aren't OGC specs. WMS-C is also a bit of a kludge while TMS lacks some useful but peripheral features. WMTS has the backing of the OGC and combines the tile specific design of TMS with the extra features of WMS, but it's complex and its implementations tend to be less mature than those of the other two as it's more recent.
Besides allowing for cached/pre-rendered tiles, tiling also allows for smoother panning on a slippy map. On the down side, it can result in clipped or missing symbols at tile boundaries, and labels duplicated for tile spanning features. heatmaps and similar interpolations may also break across tiles depending on the implementation. If the server knows the request is being used as a tile, then it can mitigate those rendering problems using techniques like gutters or meta-tiles.