You could use a rheostat to control a lamp's brightness and for very small lamps, this might be an option.
For larger lamps, the problems get serious and are related to each other. They are heat dissipation, size, cost and efficiency.
If you just switch something on or off, the switch doesn't dissipate much power. Maybe a little if there is sparking.
If you put in a rheostat, it will get hot. If you controlled a 200 watt lamp and dropped the voltage on the lamp from 110 volts to 55 volts, then the power dissipated in the rheostat would be about 50 watts.
Current in lamp = 200 / 110 = 1.818 amps
Resistance of lamp = 60.5 ohms
Current in lamp at 55 volts = 55 / 60.5 = 0.909 amps
Power in Rheostat = 110-55 * 0.909 = 50 watts.
So, the rheostat has to be quite big or it will get very hot. It also gets very expensive.
There is another problem, though. To reduce the voltage on the lamp to even 10% of the 110 volts, the series resistance has to be about 544 ohms. So, the rheostat has to be able to have 544 ohms. But only the low resistance end of the rheostat will dissipate the 50 watts. So, the whole rheostat needs to be a lot bigger than 50 watts. Maybe 500 watts.
A commercial lamp dimmer costs about $10. So, the choice is fairly obvious for mains AC circuits. They are small, cheap, very safe and they can reduce the voltage on the lamp to zero, which a rheostat can't do.
Incidentally, if you make one yourself, you should not use it as a fixture in your house as it would not be an approved type and your insurance may not be honoured if it is found later, even if it didn't cause a fire.