A better way to "know the details" is to use Trace. But let's start from the beginning...
Consider your original definition:
f[x__, y__, z___] := x + y - z
Unless there is some weird example I haven't thought of, this is effectively equivalent to
f[x_, y_, z___] := x + y - z
So, I'm not sure why you're using BlankSequence instead of just Blank. Not really important, but maybe there is some confusion about basic pattern matching.
Okay, so let's break down this expression:
f[100, 1, 2, 3]
We get (before the evaluation is totally complete)
Plus[100, 1, Times[-1, 2, 3]]
Why? Well, just look at this:
x + y - z // FullForm
(*Plus[x, y, Times[-1, z]]*)
So, our variable z was assigned the value Sequence[2,3], and that sequence became part of a Times expression, and you can work out the arithmetic from there.
Now, about your question about why f[] gives 0 and -f[] gives 1. Hopefully you see now that this isn't actually what's happening. Furthermore, looking at all possible ways to assign x, y, and z (which is what ReplaceList is doing) isn't actually relevant. As I said at the outset, there is no effective difference in your particular pattern sequence between using BlankSequence or just Blank. So, when applying f, you're never going to see any of these other ways to assign x, y, and z.
When you encounter an output that surprises you, one thing that is often helpful is to use Trace.
f[100, 1, 2, 3] // Trace
(*{f[100,1,2,3],100+1-2 3,{-2 3,-6},100+1-6,95}*)
Also, FullForm can be helpful.
f[a, b, c, d, e, f] // FullForm
(*Plus[a,b,Times[-1,c,d,e,f]]*)