If you want to know how to create an ERC20 token, I think you can have a look at this:
- Deploy a simple ERC20 token in Remix
- Create an ERC20 using Remix, without writing Solidity
- Create an ERC20 using Truffle, without writing Solidity
There is a similar contract you can have a check: https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/token/ERC20/TokenTimelock.sol
But for your specific requirements, you should try to do it by yourself, The best way to learn is to practice!