Are the subscription triggers processed synchronously or asynchronously?
Do the subscription triggers get separate limits from the publishing context?
Yes, separate limits from the publishing context
If the limits are separate, does each subscription trigger get its own set?
Each Apex subscription trigger executes in its own transaction with independent limits.
To back these claims up I create a test platform event with two Apex trigger subscriptions. I then executed a publish for 300 events via anonymous Apex.
There were 5 independent transaction logs generated. One for the Tooling API execute anonymous, followed by 4 "Platform Event Trigger" operations. Historically each log entry has always represented a separate transaction (with their own limit). I'm assuming the same applies here. I'll add some more limit logging to back that up.
Sequence of logs for my second test attempt:
Note how my first test split 200 events to the first event trigger transaction and then 100 events to the latter transactions. Yet in my second test with the same triggers and same number of published events the second trigger only fired once for the full 300 records. Important note on potential Trigger.new size for platform events.
It can potentially go all the way up to 2000 events in one trigger transaction. Source