Otherwise, I'm absolutely baffled that no error occured.
It depends on the compiler. Modern compilers should error out if you don't properly cast the literal:
int *ptr = (int*)12;
I wouldn't be surprised if Turbo C allowed it without the cast. However, it's generally a bad idea to set the address of pointer from a literal. The situations where you even can do it successfully are few and far between. Most of the time you'll just get a runtime error.
To add to what has been said, I see this most commonly when writing code for embedded hardware, in which some physical real world sensor or signaller is permanently linked to a specific memory address. For example, if you look in the manual for your embedded hardware and see that the signalling LED will be ON when a byte at memory location 0xBAADF00D is non-zero, you might expect to do something like this:
char* LEDState = (char*)0xBAADF00D;
and use that pointer to control the state of the LED.
If you need to do something like this, you will know! The manual for your hardware will make it very clear.
It was also used in the 1980s/1990s with MS-DOS 6.X and earlier to write directly to the screen, or to write directly to a port such as serial and parallel ports. Ahh, those were the good old days when Turbo C was king of the compilers.