Black Powder 101
Always use safe practices when making Black Powder! Never mix indoors, keep containers tightly closed, and always use proper personal protection. (Glasses, masks, long sleeves, etc.)
Black powder consists of three ingredients: Potassium Nitrate (KNO3), Sulfur and Charcoal.  The ratio of the mix is 75-15-10 which means 75% potassium nitrate, 15% charcoal and 10% sulfur. The Sulfur and Charcoal provide fuel for the reaction, while the Potassium Nitrate provides Oxygen. Keep in mind, the components are measured by weight and not volume. Whether you use grams, ounces, or pounds, the ratio stays the same. 75 grams of potassium nitrate, 15 grams of charcoal and 10 grams of sulfur or 75 pounds of potassium nitrate, 15 pounds of charcoal and 10 pounds of sulfur will give you the same finished product.  This ratio has been used for centuries and provides the basic foundation for virtually every firework.
There are a few methods of mixing black powder including boiling and dry mixing. Boiling involves adding the components to boiling water, drying the soup on a non-porous surface and then breaking up the chunks and sorting the crumbles. While cleaner than dry mixing, it results in an inferior black powder. As the mixture cools, the potassium nitrate will re-crystallize and essentially “unmix”. Since the goal is to make the best BP possible by thoroughly incorporating the KNO3 with the Charcoal/Sulfur mixture, dry is the only way to go.
To start, every component  needs to be as fine of a powder as you can get or make it. While black powder made with coarse components will burn, it will burn very slowly and is useless for anything other than making that wonderful smell that we all love. If you're going to granulate the entire batch, you can get away with using coarser potassium nitrate because it will disolve when youmoisten it later.
There are many ways to achieve this fine powder but the easiest for small batches is to use coffee or spice grinders. You can dedicate one to grinding charcoal and sulfur (fuels) and the other to grinding potassium nitrate (oxidizers).  It’s up to you but keep in mind, this is a hobby that can bite you and no one ever died from being too cautious. NEVER GRIND FUELS AND OXIDIZERS TOGETHER!
For larger batches, you’ll want to consider buying or making a ball mill. Harbor Freight sells a rock tumbler for around $30 but you’ll also need to get some hardened lead balls or non-sparking stainless as a grinding media. These tumblers take forever to mill, make very small batches, and go through a lot of belts, but they do make adequate BP.
One important note about the charcoal. While making BP should always be done out doors for safety, charcoal needs to be done somewhere where the dust won’t be a problem. No matter how careful you are, the charcoal will go everywhere. Even pouring it gently out of the grinder will result in a dust cloud. Plan on getting charcoal in your clothing and all over yourself.
Measure out the components using an accurate digital scale. These can be bought locally or online for around $20 and are essential for good BP. Combine the components in a non-sparking container such as glass plastic, or stainless steel. Once combined, gently run the mix through a very fine mesh sieve several times between containers. At first, the charcoal will want to float away so you want to start out slowly until it starts to bind with the sulfur and potassium nitrate. The goal here is to have a particle of potassium nitrate next to a particle of charcoal next to a particle of sulfur.
Once properly mixed, you now have what is commonly known as a green mix or meal. The first thing you’ll want to do is take a small quantity, lay out a thin line and light it. KEEP THE REST OF YOUR POWDER FAR AWAY AND IN A CLOSED CONTAINER.  I once had a spark jump 4 feet and ignite the small container of powder I was holding. My hand was burned in a millisecond and took weeks to heal. Use a fuse or a BBQ lighter to avoid getting burned.

You’ll notice that your sample burns rather slowly and leaves behind a residue called dross. Do not despair, this is quite normal. Green mix is too dense and the flame cannot spread rapidly between the particles. To make a BP that is as fast as, or even better than what’s commercially available, you need to granulate it.

Granulation is necessary to speed up the burn rate of your BP. The spaces between the granules allow the flame to spread rapidly.

Weigh out a sample of green mix and then get a container of 20% by weight distilled water. Add 2% by weight of dextrin or SGRS and mix thoroughly. (If your green mix weighs 100 grams, that’s 20 grams of water and 2 grams of dextrin.) Add the water/dextrin mix to the green mix and stir. I prefer using a baggie and just work it by hand. When you first add the water, it will seem too dry but keep working it and give the water time to be absorbed. You probably won't need to use all the water so add it slowly and let it sit awhile to give it time to be absorbed. Your goal is a consistency of modeling clay. A ball formed by hand should easily crumple when squeezed between your thumb and index finger.

Your BP can go from crumbly to soup in a heartbeat. When this happens, you can either add more dry mix or spread it out on a non-porous surface and let it dry a bit.  As it dries, you’ll notice crystals of potassium nitrate forming on the surface. This needs to be incorporated back into the mix after it's dried out a bit.  Latex gloves are a must when mixing BP. The charcoal will get into every crack in your skin and is virtually impossible to clean from fingernails.
Now take your lump and push it or rub it through a 4 mesh (4 holes per inch) screen. This screen is readily available at any hardware store. Your mix should not be so wet that it forms worms that stick to the screen nor so dry that it turns into tiny granules. Use a paint brush or wide toothed comb to gently spread the damp granules out and allow them to dry. You don’t want to move the granules too much because they’re pretty fragile at this point and you’ll wind up with pieces that are too small. You can test it by putting some in a sealed baggie and placing the baggie in the sun. If you get moisture forming on the inside of the baggie, it's not dry.. An afternoon in the sun should be plenty of time.

Sort the finished granules with screens to get your desired grain size. If you wind up with a bunch of fines that you can’t use, you can re-wet it and granulate it again.
If you did everything right, you now have BP to be proud of. To test it, make a line on a piece of cardboard and light it using the precautions above. The BP will burn with a whoosh and it will burn so fast, the cardboard will not catch fire. If that doesn’t make you grin and possibly giggle like a girl the first time, you need to head to the hospital and get checked for a heartbeat.
NEVER MIX UP MORE THAN YOU NEED. Once mixed, you have an extremely flammable mixture that will need to be stored carefully and legally.
NEVER LEAVE A CONTAINER OF BP OPEN.  The slightest spark will ignite your BP and it WILL go up in a flash before you can even think about turning your head or running away.
NEVER MIX BP OR ANY PYROTECHNIC COMPOUND IN A CLOSED BUILDING.  If something goes wrong, you want the flames and shock wave to dissipate as quickly as possible. Closed doors and windows amplify the damage.