Driving: 18
Smoking: 18
Drinking: no age limit/16*
Smoking weed: 20
Having sex: puberty**
*By all accounts I've encountered, countries where it is permitted and usual for children to drink alcohol given to them by their parents have much fewer problems with drunkenness and alcoholism. There is no 'forbidden fruit' aspect of alcohol for teenagers who have been drinking moderate amounts of wine or beer with their parents all their lives. So I believe that if we set no limit on drinking at home with the family, then legalize the independent purchase of alcohol at around 16 or so (it could probably be even lower than that), then by the time kids could buy it for themselves, they'd be much less likely to abuse it.
**Age of sexual consent is a very tricky issue with me. I had to give it a great deal of thought when an entire thread on that very topic came up once. The conclusion I came to, in summary, was: humans are biologically supposed to begin having sex at puberty. That's why it happens. So to make a law whereby a human who has reached puberty still cannot have sex because they haven't reached some arbitrarily chosen age is absurd. But modern society being as complex as it is, we would also have to make every effort to educate children about sex so that by the time they reached puberty and become physically (and legally) capable of the act, they'd know what they were getting into and would be less likely to get into trouble for it.
Where I ran into a barrier was the notion of, say, a 50-year-old having sex with a 14-year-old. The idea is repulsive to me, but no more so than the idea of a 50-year-old having sex with an 18-year-old, or a 25-year-old. But it hardly seems reasonable to impose limits on age difference if both partners have reached puberty, have been properly educated about sex, and both consent to the act. The dilemma, for me, was whether it really is wrong, morally wrong, for a 50-year-old to have sex with a 14-year-old, or whether I merely think of it as wrong because my culture has conditioned me to respond that way. I have not reached a solution to this one yet.