Well some explanations:
Q. Why do you use LANG_SERVER everywhere? This misses the point of using ML messages.
A. Its based arround lang server, normally people not change an language of small plugins.
Q. Having console commands prefixed with '.' (or anything similar for that matter) is unconventional. It is personal preference but triggers like this are usually reserved for chat commands.
A. Its a bug, i forgot to replace with /votekick and place as chat command.
Q. task_exists is unnecessary for most applications. You can easily keep track of it yourself.
A. Its to check a end of vote and remove a menu from player that vote after session of VK
Q. Your stop function could actively invaildate the vote menus.
A. Yes its purpose, if someone vote after end of VK.
Q. Always update g_tUsed even if an admin has the ADMIN_VOTEKICK_FLAG. Then make the iMaxTimes check in cmdMain dependant on the admin flag. This way you better handle changing admin flags (unlikely, but good design).
A. I only add the used for player, admins can start votekick in unlimited times, but its a good idea.
Q. Relying on entity ids in your menu is unsafe. A player might disconnect (you never check this) and someone else can even take his spot. You need additional verification here.
A. Yes, its another bug thanks.
Q. You use inconsistent indentation throughout your code. You should fix this.
A. I really not understand correctly, fix indentation? Explain better.
Q.
(iBanTime > 1) ? "minutes" : "minute" could me using ML
A. Yes, thanks.
Q. Support for AMXBans or similar systems (if there are any) might be desirable for some people.
A. If requested yes
Q. I don't know about others but I find this:
Players = iPlayers[i]; to be confusing variable naming

A. I not

but i see in most common codes in forums, its a my habit
Q. You use get_players with a mix of "h" and "ch" flags. In some instances it seems like this is unintentional.
A. Really yes, i tested whole plugin with bots ( Forever Alone

)
Q. I believe you need to do more sanity checks around various cvars (negative values)
A. I think its a cvar (!somevalue) it will check for negative values and return 0 ??
Q. Also you're potentially risking some divide by 0 problems around get_percentage
A. Not using get_players i think, if someone has in server always return any value, and if no votes it will fail anyway.
Q. Is there a technical reason for VK_MAX_REASON_LEN being this low?
A. I think its better to use in menu and short readable in small votes
Q. You could use show_activity from amxmisc.inc for some admin-triggered messages.
A. thanks for suggestion
Q. You use is_user_admin to detect admins which may not be desirable, there could be players that just have a reserved slot or can not kick/ban people.
A. Yes, any admins will disable the votekick when he is online in server, its unecessary
For rest, it's depending from bug reports and testing..
__________________