I think Apple tries to hide it, but the full technical description of the HFS+ volume format can be found on their developer website here:
Technical Note TN1150
HFS Plus Volume Format
Here are some bits that are relevant to your question:
HFS Plus allocates space in units called allocation blocks; an allocation block is simply a group of consecutive bytes. The size (in bytes) of an allocation block is a power of two, greater than or equal to 512, which is set when the volume is initialized. This value cannot be easily changed without reinitializing the volume. Allocation blocks are identified by a 32-bit allocation block number, so there can be at most 232 allocation blocks on a volume. Current implementations of the file system are optimized for 4K allocation blocks.
For the best performance, the allocation block size should be a multiple of the sector size. If the volume has an HFS wrapper, the wrapper's allocation block size and allocation block start should also be multiples of the sector size to allow the best performance.
So basically, what Microsoft calls "clusters" in FAT and NTFS, Apple calls "allocation blocks" in HFS+. This answers your second question: Yes, HFS+ is an example of a filesystem that uses both extents and
clusters allocation blocks. And for that matter, NTFS also uses extents and clusters.
HFS Plus tracks which allocation blocks belong to a fork by maintaining a list of the fork's extents. An extent is a contiguous range of allocation blocks allocated to some fork, represented by a pair of numbers: the first allocation block number and the number of allocation blocks. For a user file, the first eight extents of each fork are stored in the volume's catalog file. Any additional extents are stored in the extents overflow file, which is also organized as a B-tree.
So in HFS+, an extent is a contiguous run of allocation blocks used to store a file* or a portion of a file. If the file is fragmented, it uses one extent per fragment. From what I can tell, this matches the way discussions of NTFS internals use the term "extents" as well.
*file: Technically, I should have said "fork" here, but since no one uses resource forks anymore, the fact that HFS+ supports separate "data" and "resource" forks for each file is mostly just a historical anachronism.