memory_limit_hard_bytes refers to all the memory consumed by the tablet server. It has an effect in many things but arguably the biggest effect is that the tablet server will reject all writes when memory consumption reaches this limit.
block_cache_capacity_mb dictates how much memory should be saved for the block cache. The block cache caches blocks that are read from disk, thus speeding up scans that hit cached data. The block cache also has some effect on writes, by allowing to cache bloomfilter blocks, which we lookup to make sure that rows are unique. The page cache caches previously fetched disk pages, but is managed by the OS and thus out of Kudu's control.