I don't think this is your fault; the description isn't very explicit. Let me try to do a bit better. (I'll also try to go somewhat further, and you should not be discouraged if at some point it stops making sense.)

You can think of the "surreal numbers" as being built up step by step. We start out with no numbers at all, and then we repeatedly do a construction that makes some new numbers.

A surreal number is made from two sets of (pre-existing) surreal numbers. We typically call them L and R, for "left" and "right", and sometimes write it as L|R or {L|R} or something like that. The "left" numbers have to be smaller than the "right" numbers. The resulting number will turn out to be, in a certain sense, the "simplest" number in between all the left numbers and all the right numbers.

Now, as I said, we start out with no numbers at all. It might seem like that gives us no way to proceed, but it does: even given no numbers at all, we can still make a set of numbers, namely the empty set! So we can use that for both L and R, getting ∅|∅. Empty sets on both sides. We call this 0, and it will turn out to behave in the way you'd expect the number 0 to behave.

Now we suddenly have another set available, namely {0}, the set containing only zero. Which means that instead of being able to make one number, maybe we can make four: ∅|∅, ∅|{0}, {0}|∅, {0}|{0}. The first of these we already knew about. The last isn't actually admissible -- remember that the "left" numbers have to be smaller than the "right" numbers, which is "vacuously" true when one of those sets is empty (it means "if you have a number x in the left set, and a number y in the right set, then x<y", and if there are no numbers in the left set or no numbers in the right set then that's trivially true) but isn't true when both sets contain 0 because 0<0 is false.

So actually we get two new numbers: ∅|{0} and {0}|∅. The first fits into what OP calls the gap "between nothing and zero". The second first into what OP calls "the gap between zero and nothing". In both cases, "zero" means a number and "nothing" means a space where we don't yet have any numbers.

The number ∅|{0} is called -1 (it has to lie to the left of 0, and there's no constraint on its left, and -1 is "the simplest number less than 0") and the number {0}|∅ is called +1 (it has to lie to the right of 0, and there's no constraint on its right, and +1 is "the simplest number greater than 0").

I should explicitly acknowledge that I haven't defined what "less than" and "greater than" actually mean for these numbers, nor anything else about how they relate to one another that could possibly justify giving these things the specific names 0, -1, and +1. But there are definitions for "less than" and "greater than" and "plus" and "minus" and so forth, and the whole thing does turn out to work very nicely.

Anyway, once we've got these numbers we have eight possible sets that can go on the left or on the right. The requirement for left-things to be smaller than right-things reduces the possibilities somewhat, and the actual new numbers we get next time around are: ∅|{-1}, which turns out to be -2; {-1}|{0} which turns out to be -1/2; {0}|{+1} which turns out to be +1/2; {+1}|∅ which turns out to be +2. We also get some already-existing numbers in new ways; for instance, {-1}|{+1} is actually equal to 0 ("0 is the simplest number between -1 and +1"). Again, I should explicitly acknowlege that I haven't said anything about how you determine when two of these things are actually equal; again, it does all turn out to work properly.

If you keep going with this construction, you produce all the integers, two at a time, and also all the "dyadic rationals", meaning fractions where the denominator is a power of 2. And then, once you've got all those, at the next stage of construction you abruptly get all the real numbers -- e.g., the square root of 2 is L|R where L = {dyadic rational numbers that are negative or have a square smaller than 2} and R = {dyadic rational numbers that are positive and have a square larger than 2} -- and you also get {0,1,2,3,4,...}|∅, conventionally written as a lower-case Greek letter omega, which is an infinite number, larger than all the integers. (And its negation.) And {0}|{1,1/2,1/3,1/4,...} which is an infinitesimal number, positive but smaller than any ratio of positive integers. And you can then proceed further and construct a vast infinitude of numbers, including all the real numbers (which we've already made) and all of the so-called infinite ordinals (which you can kinda think of as being a sort of "infinite positive integer", though there's more to them than that) and much more, all in a system that lets you do arithmetic and suchlike. It's very elegant, if your brain has been twisted into the mathematician-y shape that finds such things elegant.

Thank you for writing a detailed explanation! I've slightly edited mine to explain the infinity jump. Yours is, of course, much more detailed.

For the infinitesimal number, I think it makes more sense to use {0}|{1,1/2,1/4,1/8,...} since it gets born at the same day as say 1/3. So it is easier to understand how it arises without "waiting" for all reals.

Oops, that was an oversight: indeed you don't get all the rationals I need for what I wrote until "one day later" (in Knuth's terminology). Regrettably I'm too late to edit what I wrote above.

Thank you for this explanation! The construction is so elegant, and in a way, the basic idea is simple (?) -- I wonder why it wasn't thought up of much earlier than it was. Maybe it's a little bit like https://en.wikipedia.org/wiki/Egg_of_Columbus

Not only is the basic idea simple, it's a sort of generalization of two other things that were already well known but before Conway were thought of as completely independent.

First: the construction of the real numbers from (traditionally) the rational numbers by means of "Dedekind cuts" (sometimes called "Dedekind sections"). The idea is that if you're trying to build up the machinery of mathematics from scratch, it's not too hard to go step by step from (say) sets to nonnegative integers to integers to rational numbers, but it's harder to get from there to the real numbers, and Dedekind's idea is to say that e.g. the square root of 2 is the way of chopping the rational numbers into "things less than the square root of 2" and "things greater than the square root of 2".

Second: the construction of the ordinal numbers (a sort of generalization of the notion of "nonnegative integer" that allows the numbers to get very infinite) due to von Neumann: you start off saying that zero "is" the empty set, and then you repeatedly say: the next ordinal "is" the set of all the ordinals you've constructed so far. So, e.g., 1 = {0}, and then 2 = {0,1}, etc. -- but once you've constructed all the nonnegative integers you can then look at {0,1,2,...} and that's a new ordinal typically called ω, and then you can take {0,1,2,...,ω} and call it ω+1, and so on and so forth.

Both of these are special cases of what Conway does: Dedekind's is the case where all the numbers are rational numbers and you don't allow either set to be empty, and von Neumann's is where you _require_ the right-hand set to be empty.

There's a further connection, which I believe is how Conway found these things in the first place: if in the definition of surreal numbers you delete the requirement that everything in L has to be less than everything in R, then what you've got is (more or less) the definition of a position in a two-player game. L is the set of positions one player can move to, R is the set of positions the other player can move to. (I say "more or less" because e.g. in many games you're allowed to repeat positions, and games may have complicated winning conditions or involve chance or whatever.) And there's a whole rather nice thing called "combinatorial game theory" that's all about these, and from that perspective numbers are just one particular kind of (position in a) game. (Specifically, a number is a game in which at no point in the subsequent gameplay can it ever make your position better for you to make a move: you'd always rather pass if you could.)

What an interesting construction. Thank you from a curious layman for your write-up. I thought it was pretty easy to follow. I'd heard of the surreal numbers before and never knew about the construction mind-game behind them.

Thank you this was very well explained