I often buy yarn in skeins rather than balls, and then need to wind the yarn into balls before I can knit or crochet with it. The best method I've found uses a 'nostepinne', which is a tapered stick with a groove at one end. Winding yarn this way is easier on my hands than just winding free-hand, because a wooden handle is easier to grip than an ever-growing ball of yarn. The nostepinne method is also great because you get a centre-pull ball - I find knitting with the inside-end less chaotic because the ball stays where you put it and doesn't roll around. You can also knit from both ends of the ball if you want to hold the yarn double.
Dad and I made this video which shows how I do it:
First, lay your skein of yarn around a chair-back or a helper's
outstretched hands. Then attach the end of your yarn to the nostepinne
by winding it around the groove a few times, and then start winding your
ball around the middle. It goes quickly once you get used to it! When
all the yarn has been wound, secure the end by tucking it under a few
wraps on the ball. Pull the ball off the nostepinne (this is where the
tapered shape comes in handy), and fish out the end from the centre
(i.e. the end that was wrapped around the groove). Your yarn is now ready to
go!