I'm moving to cPanel from a windows world so please bear with me. I'm looking for advice for what would be the best way to setup my accounts & server to host the following educational sites (i.e non commercial) sites
I could really help you with the transition with this and whatever level you require from giving you a few tips to doing everything for you or somewhere in between as I have many years experience with precisely this sort of thing. For now, I'll just respond to your post line by line ...
I want to use a consistent naming convention of uniqueID.group.class.server.com
There is no problem with setting up a subdomain in the manner that you are requesting under Cpanel and there is several different ways that you could go about implementing this.
The first (and obvious) method would be to setup subdomains under your main Cpanel account with possibly their own FTP login and you could control access by simply controlling the assigned FTP logins. This is the simplest form but might become a pain to manage when you are talking about so many subdomains and logins to manage.
A second method would be to use a wildcard DNS setup and then use a script on your site to handle virtual subdomains. This is a little more complicated to setup on the front end but easier to manage once setup than just setting up individual subdomains for everyone on a single Cpanel account.
There is a better way ...
Given the number of logins you mention (below), a much better method may be to consider setting up one or more reseller accounts on your server. Doing this allows you to have a bit better control over multiple accounts and can still allow or restrict access to individual accounts and can do this on a global scale instead of having to handle every login individually for many tasks and could also group certain users such as from certain classes under separate reseller logins if you wish to further organize things.
My problem is I have a backlog of over 120 old sites I need to fit into the above structure from a windows server. Only I need to be able to update them & don't want to have to create 120 accounts
Converting existing data is indeed your most difficult task but once ported over to the new accounts, management should be very simple. The good news is that you can pretty much automate the entire process and you don't have to manually setup each account and convert the data. All of this can actually be scripted so you could reduce most everything down to a single command. If you old system is in a recognized format, you may already have converters already available native to you. Otherwise, scripting these kind of conversions is fairly simple and I could help you with that. You might also want to take a look at the Cpanel developer site and look into the API provided for exactly this sort of thing.
In the near future I will need to add 30 more sites into the same structure with more batches to follow but will need individual access accounts before somehow locking the user account out again.
Again, I believe your best bet on this is going to be to setup either a single reseller, or multiple reseller account such as by class, and then setup each individual account under the ownership of those reseller account(s).
In this configuration, you would have a master login and each account would have it's own separate Cpanel login but you could suspend and unsuspend accounts in mass, change passwords, make account changes, etc.
Another added plus to organizing classes under resellers is you could feasibly drop the "class" part of the URL and just designate that to the reseller account that owns the hosting account which would make the URLs a little bit shorter but you would still be able to lookup who and which sites are in what class easy enough, etc.
Anyway, like I said, there is several different ways you can do that.