Designing fonts is whole art on its own and requires a tremendous amount of patience and consistency. The first thing you need to have are font charts. Once you have the charts you will need the necessary tools to draw the fonts.
Here is a list of the Unicode charts that relate to Arabic:
Pay special attention to the following:
Punctuations: 060C, 061B, 061F, 0640, 064B, FD3E, FD3F
Harakat: 064B - 066D, 0670
Alef Wasla: FB50, FB51
Word Ligatures: FDF2
There are several free font editing/modifying/converting tools out there, in addition to commercial ones of course. For a quick discussion on font types, you might want to check the Font HOWTO. Most sepecifically, Section 2.1 titled "Types of Fonts".
Here is a list of some free font editors:
It is not enough to be able to create fonts. You may also want to convert fonts from one format to another. Here are some useful converters: