Can someone explain how TokenVesting works?

I am trying to make a contract that distributes tokens to 10 addresses evenly for 12months, by distributing tokens every 5 minutes to all 10 addresses. Can someone explain how can this be done with TokenVesting if its possible or TokenTimelock.sol or how should I approach it.

Also what is the cliff and duration? is duration the entire time or vesting in this case 12months or is it the interval in this case 5minutes? also the start time is before cliff or after? It would be of much help thank you.