Looks like a good piece of work.
Have you looked at PINN
- my fork of NOOBS?
It directly supports my noobsconfig
package which was designed to apply customisations to an OS as it is installed. It is especially designed for the sort of thing you are doing.
You will have spent a lot of time customising Raspbian for this. But next time there is a new release of Raspbian, you may have to do it all again (or you could apt-get upgrade I suppose).
NOOBSconfig is a way of separating your customisations from the OS image so you can update the image and apply the customisations to the latest image. It also avoids you having to mess about with creating your own custom OS for NOOBS involving xz comrpession etc.
PINN will install the latest Raspbian image, then customise it using some simple file additions to add all the tutorials, wifi settings etc.
Being based on NOOBS, if the student really messes up their Raspbian image, you can start again very easily using the NOOBS recovery system to reinstall your customised image again, without resorting to removing the SD card and re-imaging it on a PC.
PINN also allows the OS to be installed from USB stick, so you could have a master USB stick (or several) which is passed around the students to install from, thus saving space on the SD card.
It can also install your 'run-once' on boot scripts to do any of your final customisations like setting hostname or ip address based on serial number, or any apt-get installations.
In fact Meltwater has produced a whole infrastructure of scripts for noobsconfig that you could make use of on his PiKitchen
Of course, if you want to reduce the size of your downloaded images by removing packages, it won't help with that - you will still have to remove them first and create a new image. It could however, do an apt-get purge etc on first boot so at least it frees up some SDcard space after installation
But if you do want to change your customisations, such as add new tutorials etc, you only have to distribute the customisations, not the whole of a new image, so that would gain you some download bandwidth/time.
Plus, you could separate your customisations into different packages (or "Flavours" as noobs calls them) so you can just install what you need on top of the standard Raspbian, so perhaps some customisations for the Cotswold Jam, another set for a Code Club, another for a different set of tutorials on python compared with scratch...? etc. Then you only need to carry one standard image around plus your smaller customisations, rather than a complete image for each different custom installation.
Of course, you may not consider this suitable, or want to redo all your hard work! But I put it out there as another option, and for others who may want to do similar things.