If you have not already done so, I recommend reading Medieval Hand Stitching – Basic Stitches (Start Here). It describes what supplies you will need for hand stitching medieval garb, how to start and end your thread, and the basic stitches upon which most other stitches are based.
This tutorial describes how to make fabric buttons. They are most often seen on late medieval garments like cotehardies and caftans, and are an inexpensive and period alternative to metal buttons. Other variations did occur, like fabric wrapped around a wooden disk or thread wrapped buttons, and this is not the only way to make fabric buttons. I like the square fabric method because it provides more stuffing for the buttons, is less wasteful of material, and is infinitely easier to cut out.
Cut a square of fabric. Experiment with different size squares to figure out how big it needs to be to create the size button you desire from your fabric. The size needed will vary depending upon the weight of the fabric you are using. If possible, find a round object to trace for the circle, or make a template. This will make it far easier to create consistently sized buttons.
Create a running stitch in a circle. DO NOT TIE IT OFF at either end.
Tuck all the edges into the center of the circle.
Pull the circle of running stitches tight, making sure to keep all the loose edges inside the pouch you are creating. Then tie off the ends of your thread.
If you are making a batch of buttons and planning to use them later, stop here. When you are ready to attach the button to your garment, resume at the next step.
Run your needle through the button, through the base and up through the top.
Thrust the needle back through the button, from the top down through the base. Stitch through the edge of your fabric where you want the button to be placed, and then thrust the needle back up through the button. Do this repeatedly until your button is securely held to your garment.
Wrap repeatedly around the threads (and the very base of your button if the visible fabric is long enough)
Secure your thread and run the tail either between the layers of fabric at the edge of the garment, or up into the body of the button.