Partial answer.
First, know that Asterisk configuration is more like a programming language than, say, Apache configuration. There are numerous ways to create "nonsense" configurations. On the other hand, you can create very nifty services.
There are three aspects to setting up an Asterisk installation:
- call quality
- what manner of phones will you be using?
- which services do the users expect?
Quality
In my experience, your company suffers in reputation from bad phone lines, so make sure you get get decent quality from your installation. Quality is among other things:
- low upstream latency and high link uptime
- Asterisk server uptime; use separate UPS. People tend to get cranky if they can't call the janitor and tell that there is a power failure in the house.
- decent end-user equipment
Don't do a big bang implementation. Start with some users and work from there.
End user equipment
How are your users going to talk on the phone and how do you connect that equipment to Asterisk. Some users appreciate a headset connected to their PC, while others need a grey handset with analog dial pad or they will just be confused. Which will you provide and how will they connect to Asterisk?
For so called softphones (i.e. a SIP client installed on your PC) not much need to be done. You need a mechanism to handle accounts for these users (e.g. LDAP) and they need decent headsets. For connecting traditional analog phones, there are various sorts of equipment. For small installation, you may be able to get your hands on Zyxel Prestige 2002s (2 ports each), but for larger installations you need rack-mountable equipment of some sort.
Services
In my experience it is very difficult to get users to actually tell what they expect from a phone system, but once you give them something, they start having all sorts of opinions. So you need to be very clear about what services you provide and require a somewhat anal change management process (more so than is normally required in a small company).
Conclusion
This sounds dangerous and ominous, but know that the reward is equally great. The advantage of being able to create dedicated phone services, with the same sort of detailed control that you have with other IT services can be very rewarding. It will take some time for your users to get used to the thought that they can actually request fancy features from their phones, but once they get started, you can make their work a lot easier. Some features my users found very useful:
- voice mail that sends mail with audio files
- queues and fallback for all users
- softphone and multiple phones for all users
- phone conferences
- redirection to mobile phones, and
- routing calls through company phone system from private phones so that company picks up tab for international/expensive calls.
Also, traditionally, most phone extensions are personal, but in a modern company, most incoming calls are actually to a company function. You should probably consider not having personal extensions at all, and simply have an extension per function that rings all phones in that department/function.