Texture is nothing more than a 2 dimensional matrix of pixels - an image, nothing more. To apply a texture correctly to a 3d object you must tell it how to map those pixels (that use X and Y) coordinates to a 3d object (that has X, Y, Z coords). Doing so is called UVMapping.
So, Texture is image, that can be applied to a geometry using a sort of 'map' called UVMappig that tells Blender (or any other game engine or 3d software) where should each pixel go.
Texture only describes colour.
Now, a material describes much more than just colour. Material can describe glossines, shiness, transparency and plethora of other more or less strange characteristics of the model. Material can use textures (But does not have to) to create even more convincing graphics.
Look at a wooden chessboard for instance, the black-white checker pattern is a texture, but the way it reflects everything around, the bumpiness, shiness of it together with the texture create a material.
Moving textures between engines/3d software is easy, models when exported remember their UVMaps in most (if not all) 3d file formats. You just move texture file from one software to another, apply to geometry and it should work out of the box.
Moving materials between software almost always requires rebuilding the material structure from scratch using textures and features given software provides. Sometimes it will be relatively easy to move material between software, sometimes it will be impossible. (Imagine moving a reflective glass material to game engine that does not support real-time reflections, you will have to fake the effect somehow, depending on features the engine provides).
In your barrel example, texture would only describe a colour (also called diffuse or albedo depending on software). Material could add a reflectivity to it, some sort of bumpiness or other shiny details you can think of.