As stated in this tutorial, there are several ways to design a font. In any case, you will need a software for font editing. FontForge is a powerful and free font editor. In particular, it can generate TeX font metrics, in order to use the fonts with TeX. Moreover, it can auto-hint the fonts, which is essential for good on-screen viewing.
Another way to design a font is to describe the glyphs in a special programming language like Metafont. This has the advantage that you can use parameters to generate different weights and styles using the same program. For example, the Computer Modern fonts have been designed this way. One drawback of MetaFont is that it only generate bitmap fonts, which do not scale well. MetaType1 on the other hand can generate PostScript Type 1 fonts directly, but imposes some limitations on the constructs you can use.
Finally, remember Knuth's words from the Metafont book (page 9):
Type design can be hazardous to your other interests. Once you get
hooked, you will develop intense feelings about letterforms; the
medium will intrude on the messages that you read. And you will
perpetually be thinking of improvements to the fonts that you see
everywhere, especially those of your own design.