They may not know that they know it, but everyone who speaks English properly already knows the difference between ordinal numbers and cardinal numbers. Ordinal numbers indicate a position in a sequence, and are spoken "first", "second", "third", etc. (Or, since I'm posting this from France, "premier", "deuxième", "troisième", etc.) Cardinal numbers indicate how many of something there are, and are spoken "one", "two", "three", etc. Mathematically the ordinals and the cardinals aren't very different from each other until one allows infinite or fractional values; grammatically they're different from the start.
But there's a third kind of number in common English usage: one that's used as an identifier for something without any implied counting and without any requirement that all smaller values be meaningful. I noticed this today when I asked for my room key at my hotel: I didn't ask for the "three hundred and first" room (my hotel's not that big), or for room "three hundred one", I asked for "three oh one". More frequently we use the same syntax, a sequence of digits without place value markers, in speaking out loud street addresses, zip codes, phone numbers, credit card numbers, or internet addresses. The written form is essentially the same for these numbers and for cardinals, and these numbers are spoken as they are written; it's the spoken form for cardinals that doesn't really match what is written very closely.
This different syntax, a more overtly decimal syntax than the one for ordinals and cardinals, indicates a different meaning, and it made me wonder whether the French do the same thing, and what these kinds of numbers are called (if they are called something) by the grammarians.
I'm not sure I'd entirely agree with your claim that the "written form is essentially the same for these numbers and for cardinals."
At least for small cardinals, the written form is "one", "two", "three", "three hundred and one", etc. However, we virtually never write identifiers that way; it's almost always "301" or "90210" or "867-5309". The typical view is that this is about the size of the number, but I think it's a reasonable (if unconventional) argument that it's about whether the number is a cardinal or identifier, with exceptions for large cardinals for conciseness. You don't, for instance, put an apartment-number sign of "two" on an apartment, or in its address, and the spelled-out form mostly only shows up in street numbers when people are being pretentious.
There is also an interesting quirk in how we pronounce identifiers, though; it's more of base-100 than base-10 in many cases. Room 4321 is "room fourty-three twenty-one", not "room four three two one". (But contrast "nine oh two one oh", not "nine oh two ten".)
I don't speak French, but in Danish I think that "tre hundrede og et" (three hundred and one) would be the most natural way to say the room number. Generally I would always pronounce a 3 digit phone number "correctly" (except 112, the Danish equivalent of 911), but I would pronounce four digit zip codes differently. E.g. 2300 would be "treogtyve hundred" (twenty three hundred) and 4990 would be "niogfyre halvfems" (forty nine ninety).
Sometimes numbers are pronounced differently even when counting is implied. I would pronounce 1999 in one way if it was the year and in another way if it denoted an amount of money.
Exactly what I was looking for, thanks!
In Japanese, there are two different words for 4 and two for 7. There are some odd rules for them because of phobic similarity to the word for death. But, generally, one word is used for cardinal/ordinal and the other used for digits/nominal-numbers (IIRC).