Probably all readers* are aware that voting is defined as a formal choice of something/someone or an expression of opinion on something. A voting smart contract can be used in the context of blockchain to provide the same functionality. A so-called voting contract provides users with the ability to choose from two options in a vote. In the contract, (usually) only the owner has the right to create a poll for a certain period of time and define the voting options for this poll. The poll runs for a certain (defined) period of time, during which the users can cast their vote(s). 

After a poll has ended, the owner usually needs to manually end the poll in order for a new poll to be created in the first place. 

There is also an advanced variant of a voting contract, which offers more advanced options and features like staking, where users have to use X ERC20 tokens to get X votes.