Please note all my answer is personal preference, and the answer is short and didn’t consider all aspects, anyways hopefully the answers will help you:
1: What would be the best programs to use in this situation?
a. best program for mapping: Gtk Radiant 1.6: http://gtkradiant.com/downloads.html#binaries
b. best program for making models (players and weapon models are basically the same): Maverick Model 3D: https://github.com/zturtleman/mm3d/releases, or use Blender https://www.blender.org/download/, but Blender is not easy to learn and very bloated imo.
For both (making models and maps) you will also work with some additional tools (map compiler, text editors etc., some of them are included with the programs, some not, you’ll also use a packing tool to make pak files.). It is also very helpful to own and get used to a paint program (e.g.: paint.net, Gimp).
c. As far as coding is concerned, it’s not easy to say what the ‘best’ program is. First you need an IDE (https://en.wikipedia.org/wiki/Integrated_development_environment), it depends on your operating system, if you are on Windows, I’m suggesting to use Microsoft Visual C Express (personally I use Microsoft Visual C++ 2008 Express, though there are newer versions, and of course there are alternatives). There are guys even using Notepad for coding!
More essential is compiling the code into a playable format (qvm or dll). The good news, there are good tutorials for ioquake3 code for how to set up an environment for compiling and actually start the compiling process: http://wiki.ioquake3.org/Building_ioquake3. Please note setting up the environment for all these programs, tools etc. is sometimes a bit hard, at least for the first time, so be patient with yourself and ask for help, if needed. Once the first step is taken, than its not too hard to get good results because most of the mentioned programs are working very stable and are handy to use, which is also necessary for having good results.
2: Is it okay to have a map of my school?
As far as I know there is no point why it should not be okay, as long as a you don’t show persons/members of the school or something. So as long as only the architectural aspect is concerned it should be okay to have a map of your school (don’t use improper/illegal signs etc.). But please consider ‘realistic’ maps don’t play well in Quake 3! The dimensions won’t fit, doors are too small, ceilings to low etc. In other words Q3 players moving too fast (and are to low, but jump too high) for a realistic copy of a real building. There is also a good map of a school already: https://ws.q3df.org/map/mxl_school/
3: How hard would it be to code in (and which type of code to use) a new weapon, and a new gamemode involving placeable bombs?
First making a mod (what you want to do) is easier than coding ‘engine’ related things (imo) like new rendering features etc. The good thing is (io)quake3 code is designed in such a way that you only have to deal with those ‘easier’ parts of the code, additionally every regular ioquake3 player can use your mod (compatibility). The main goal of ioquake3 is the opposite, it mainly deals with the engine aspects (OS independence, Input devices, compiling on different platforms, …, and most of all fixing bugs). So you have to work with the game, and cgame module of the code. Here is a very raw overview:
a. create a Github account (to fork ioquake3), set up a version control system (like git or svn).
b. clone/fork ioquake3, set up the environment to compile the code.
c. write your code (using plain C code), compile it and have fun!
As already said, in your case you will mainly deal with the files in cgame and game folder inside the code folder, here is where the magic for your mod happens. You can either read through the existing code, and copy/paste an already existing weapon (but rename it) to have a new weapon, or read some tutorials about how to make cool mods. Lot of modding tutorials are lost, but still one of the ‘best’ tutorials are the one from Code3Arena, because they are good for beginners, unfortunately they are outdated, and some of them don’t work anymore, but it’s good to get a feel of the structure of the q3 code: https://www.quakewiki.net/archives/code3arena/
…anyways, q3 is cool, but also don’t forget to learn for school too