1) Welcome to the Party!
2) As you are obviously new here, I have some suggestions to help us all help you:
When you post, please post your entire configuration including (but not limited to) your installation method (7.X.X?) and vicidial version with build (VERSION: 2.X-XXXx ... BUILD: #####-####).
This IS a requirement for posting along with reading the stickies (at the top of each forum) and the manager's manual (available on EFLO.net, both free and paid versions)
You should also post: Asterisk version, telephony hardware (model number is helpful here), cluster information if you have one, and whether any other software is installed in the box. If your installation method is "manual/from scratch" you must post your operating system with version (and the .iso version from which you installed your original operating system) plus a link to the installation instructions you used. If your installation is "Hosted" list the site name of the host.
If this is a "Cloud" or "Virtual" server, please note the technology involved along with the version of that techology (ie: VMware Server Version 2.0.2). If it is not, merely stating the Motherboard model # and CPU would be helpful.
Similar to This:
Vicibox X.X from .iso | Vicidial X.X.X-XXX Build XXXXXX-XXXX | Asterisk X.X.X | Single Server | No Digium/Sangoma Hardware | No Extra Software After Installation | Intel DG35EC | Core2Quad Q6600
3) Excellent questions. One at a time:
is it safe to modify extensions.conf and sip.conf directly?
Safe is subjective. If you test before and after that you haven't broken anything, it's safe. Potholes to avoid: Every context in extensions.conf must have the hangup priority. You should find several notes about this and why. If a dialplan extension can terminate without the EXPLICIT "hangup" line required by your version of Vicidial (linked to your version of asterisk), data can be lost when "closeout" processes do not run. This applies whether you put a context in a custom dialplan location in the GUI or directly in extensions.conf. Making changes directly in the "-vicidial.conf" variants of any file will be overwritten as those files are dynamically generated by Vicidial at runtime.
Note that upgrading Vicidial is trivial if you AVOID direct .conf changes. Otherwise, you have to remember to re-update them each time. However: There are many places where custom diaplan entries can be made. Carriers is a cheap/easy version but be careful not to use a context in a Carriers Dialplan Entry as that location expects to be in default for all carriers. If you create a context, everything written into the -vicidial.conf version will now be in your new context instead of default.
A similar concept is involved when placing a context in the "System Settings" custom dialplan entry area. But it is possible to "map around" that by putting a 2nd context below your new one and an "include" above it. So your custom entry can successfully include a specified context without altering the flow of the Vicidial stock dialplan behavior if you know what you are doing. Make the changes, watch extensions-vicidial.conf and sip-vicidial.conf to see where they land ... if done properly, in the end, you'll be "upgrade proof" and an upgrade will ONLY require modification of the "externip" value in sip.conf.