How many votes can the user cast? To how many block producers? When does a change in the user's voting take effect?
Anyone who owns a EOS registered token can vote,You can vote and change your vote as many times you want.Each "staked" token can potentially vote for up to 30 different BPs. Votes are weighted by the quantity of tokens being staked. The amount of votes you have is equal to the amount of staked tokens that you have. So for example, if in your account you have 35 staked tokens, your vote will have a power of 35.
Within your account, you will see two different states for tokens to be in; staked and unstaked. Unstaked tokens are free to be moved around, transferred to another user, or used to make another account. Staked tokens are what allocate for your account the amount of Bandwidth and CPU you are guaranteed access to on the EOS network.
The 21 Block Producers receiving the most stake-weighted votes get elected as active Block Producers.
You can change your votes many times, but each time you "unstake" a token, it will stay "locked up" for up to three days. So, for example, if you hold just one token, you can't vote for a different set of Block Producers every day.