Program: Paint Shop Pro X5, should work in earlier versions.
Difficulty: Intermediate. Assumes basic knowledge of program features and menu locations. (ie: I'm not going to explain where the materials palette is or how to switch to the gradients tab.)
Translateable: Theory should work in other programs. I don't know if they'll have the exact features and materials used.
I started writing up a much longer and more detailed tutorial like this back in October, but I somehow lost the reference images I made for it, so I probably won't be finishing it.
I want to start off by saying that I have a huge resource library. Some of them date back to the early 2000s and have survived 4 or 5 computers. I don't even know how that's possible since I lose things I need all the time.
I also like making resources. I think I've said before, making graphic resources is as much fun--or more--for me than making the art I use them for. So, I absolutely encourage folks to browse stock photography and free resource sites.
One thing I have noticed, though, is that a lot of people seem to ignore the resources they have built in to their imaging programs. There's a lot of material that comes with Paint Shop Pro, and there are a who bunch of effects you can use.
There's no right or wrong way to make a texture. Different methods very often produce similar results. I use stock pictures in my textures a lot. Sometimes I just find that it's easier and faster to make a custom texture for a project as I go along. This texture was done with a "quick and dirty" method to get a usable result in relatively short time. If I was adding it to a project, I'd probably alter it some more once I had it on that canvas.
Normally I would have a project about 2/3 finished and I'd have realized that the background needs something, so I would think about applying (more?) textures. Since I don't have a ready-made project here, I just made it up as I went and wrote down the steps. I had no idea what I was going to get when I started it or if it would turn out at all. The best way to learn is just to open your program and start experimenting. You'll make a lot of crap, but you might just come up with a method you like and will be able to utilize in the future.