A texture pack is a collection of files that is used to change the in-game textures of blocks, items, mobs and the GUI. They are zip files that have various PNG images in them and a pack.txt. The default resolution for packs is 16×16 (measured pixels in block height and width). Anything larger is called ‘HD’ and requires a patcher to run.
All versions of Minecraft support custom textures, albeit old versions requiring you to modify minecraft.jar. High resolution texture packs are supported on all versions without a patch, however certain textures have errors or may not be changed.