Chemistry Stack Exchange is essentially a grassroots democracy. Every user gets a say in the development and the change of 'rules' (our policies) or guidelines. Additionally we are embedded in a large (if not huge) framework of sites, that follow the same rules (e.g. the Code of Conduct), same User Interface (with all the limitations and advantages), similar usage patterns (good stuff = up vote, not so good stuff = down vote), similar policies (the homework policy used to be an example for that), and probably other stuff. However, some of these communities have also differences in their usages or policies, as some simply cannot be adapted to other sites.
The policies we have in place now were discussed starting in the private beta phase and growing/extending/cutting back since then. Certain usage patterns have established, and some users interpret these policies ever slightly so differently that it may cause disruption. Those usage patterns are usually the reason why things around here change ever so gradually. Let's get back to all the questions that were asked one-by-one and see what may be missing.
Compare Facebook, which despite a huge user base edits policies rather frequently, and often in dramatic ways. By contrast, at Chemistry Stack Exchange (Chem SE) changing the name of one VTC option (or just adding another) elicits a great deal of opinion.
Facebook is a company, if they decide to change their policies they just do. Stack Overflow, as our service provider (and also a company), can do exactly the same thing. That happened when they implemented changes because of changes in laws, or applying the Code of Conduct, etc. SO is usually much better in communicating these things and discussing such changes beforehand, than Facebook would ever be inclined. However, that this doesn't always work well was seen, when they introduced the new UI.
If they make these changes you have a choice: accept these changes, or leave.
A VTC option is something that we as a community agreed upon, we make this 'rule' and we enact it. If we cannot find a way to change this into something we all agree on, we will enact it differently, which will lead to disagreement along the line.
With the homework reason that is exactly one of these points. Some people se it this way, others see it another way. But as it is now, we kind of all agree on the fact that something needs to change, but we can't exactly grope what, and how to write it in a way that a new user will immediately understand it. And this is basically where we got stuck a couple of years ago.
Meanwhile the current system still works, albeit sub-optimal. We better have this in place than leaving us vulnerable to unnecessary discussion once it completely breaks away.
Is it because this is technically complicated (involving major alterations to the code base)?
No, it is easy to switch this on and off, and modify the text. We have three custom ones available, two are currently in use (and the medical one is not going anywhere). So this is already implemented, and we experimented about with this some time ago.
I can understand that the moderators don't have access to the code, but presumably they have a line to the developers, or?
We have, but changes, which come from our community might have an effect on other communities, and they also might not be highest priority. (I wouldn't count on ever having mhchem help in the edit side bar for that matter.)
Or is it because it is difficult to agree on policy? Presumably things have to be brought to a vote etc.
Exactly. Establishing a policy which everybody (or at least the large majority of the active users) agree on it the most important part. It has to be easy to understand and follow for new users, and easy to enact for our current users. It's not simple to make major changes once we have something working in place. Radically changing a policy (on meta no less) doesn't automatically mean you change everyone's behaviour, it doesn't even mean everybody knows about this change.
How difficult is it to alter the choice of VTCs? If it is difficult, why, and can this somehow be changed?
Difficult enough. (Let me know if anything remained unclear from the above.)
What can be changed on the site, how, and how fast? Specifically as regards aspects such as close menus and other global features (not user-specific) of Chem SE, what is easy to change on this site, and what is not?
Tags, descriptions, some parts of the help pages can technically be changed quite fast. These basically require a meta post with a proposition, and then we fix a deadline and regard it as part of our policy. Same applies to anything withing faq.
Reaching a consensus (or sometimes only compromise) is the hardest.
Functional changes should be brought up on mother meta, and could take ages.
I currently cannot think about anything more or specific right now, so if you thinks theres something missing, comment and we'll get to it.