Refer to this link for more info on scheduled jobs: https://developer.salesforce.com/docs/atlas.en-us.apexcode.meta/apexcode/apex_scheduler.htm
1. How many jobs can you schedule at once?
You can only have 100 scheduled Apex jobs at one time.
If you exceed 100, ex 101, you will get the following exception:
System.AsyncException: You have exceeded the maximum number (100) of Apex scheduled jobs.
2. How many unique instances of a class can you schedule at once?
The same limit applies here, 100 is the maximum scheduled jobs.
If you currently have 0 scheduled jobs in your org, you can test this yourself with the following code. This will schedule 100 instances of the same scheduled job successfully:
for(Integer i = 0; i < 100; i++){
MyJob newJob = new MyJob();
String sch = '0 0 * * * ?'; // every hour every day
System.Schedule('TEST' + i, sch, newJob);
}
3. Does the number of unique classes scheduled at a time matter?
I suppose it depends on what those jobs are doing. If they are modifying the same data you could have conflicts and locking issues.
4. In the case of scheduled jobs, how exactly would I check whether I'm over the limit or not?
You can evaluate your current count by viewing the Scheduled Jobs page
in Salesforce and creating a custom view with a type filter equal to
“Scheduled Apex”. You can also programmatically query the CronTrigger
and CronJobDetail objects to get the count of Apex scheduled jobs.
Here's how you can find the number of Scheduled Apex in Apex (JobType 7 represents Scheduled Apex):
Integer scheduledJobCount = [SELECT COUNT() FROM CronJobDetail WHERE JobType = '7'];