Minimal pairs are pairs of words that have one phonemic change between them. For example: the two words "let" and "lit" make up such a pair because the only speech sound changes is that between /e/ and /i/. It doesn't make sense to speak of a minimal pair in general, as a minimal pair in one language or dialect may not be a minimal pair in another one. Minimal pairs therefore must be specified in the context of a language. The "let" + "lit" pair is a minimal pair in English. An example in German is "wagen" + "nagen".
Sound changes (also called phones) do not have to be vowels, as the English minimal pair of "put" + "but" shows. In fact, this pair only differs in vocalization of the consonant as even the configuration of the mouth is the same between /p/ and /b/.
A minimal pair is a pair of words, both of which are in a language, which are recognized by speakers as being two separate words, but which only differ by one phoneme, as far as the language is concerned. Even though a language may make distinctions between a small number of phonemes, speakers actually produce many more phonetic sounds. Thus, the definition of a phoneme in a particular language is a set of phonetic sounds that all associated with the same phonemic sound in the brain. A Chomskyian linguist would say they are translated to that same sound, while a Lambian stratificationalist would say that the phonetic sounds were on a separate level in the brain. Likewise, the production of these different sounds is completely determined by language. When there is a minimal pair, then those two sounds constitute separate phonemes, otherwise they are called [[allophone]s of the same underlying phoneme. For instance, voiceless stops (p,t,k) can be aspirated. In English, word initial voiceless stops are aspirated, whereas non word-initial voiceless stops aren't aspirated (This can be seen by putting your fingers right in front of your lips and notice the difference in breathiness as you say 'pin' and 'spin'). There is no english word 'pin' that starts with an unaspirated p, therefore in English, aspirated [p^h] (the ^h means aspirated) and unaspirated [p] are allomorphs of an underlying phoneme /p/. This is not true of all languages however - both cantonese and thai make the distinction between [p] and [p^h], so in those languages, /p/ and /p^h/ are separate phonemes.
Another example... in English, the glides, /l/ and /r/ are two separate phonemes (minimal pair 'lead', 'read'), however in many asian languages the two glides are allomorphs, and the general rule is that [r] comes before a vowel, and [l] doesn't (e.g. Seoul, Korea). If you ask someone who is a native speaker of korean, they will tell you that the [l] in Seoul and the [r] in Korea are in fact the same letter. What happens is that a native korean speaker's brain uses the underlying phoneme /l/, and depending on the phonetic context (before a vowel or not) this phoneme gets expressed as either the [r] sound or the [l] sound. Another korean speaker will hear both sounds as the underlying phoneme and think of them as the same sound. This is how different languages can have varying numbers of sounds in their inventory, even though there are a constant number of distinct phonetic sounds that humans can make.
In other languages such as Italian and Spanish there are many minimal pairs, whereas French has no distinctive stress (as Latin). Latin, however, had distinctive length of consonants (as Italian) AND distinctive length of vowels (as German or Hungarian). Languages such as Chinese and Japanese, but also Serbian/Croatian and Swedish have distinctive tone. What may be important in one language (e.g. stress in Italian) may be unimportant in another language. What applies to stress and tone is also true for phonemes. [s] and [z] for example are allophones (variants) of /s/ in Spanish, but in English, /s/ and /z/ are phonemes. [z] in Spanish only appears in front of voiced consoants (e.g. in mismo 'same'). In English, on the other hand, it is not possible to say where /z/ and /s/ appears (although there are some restrictions, see phonotactics). A minimal pair in English is zeal versus seal /zi:l/ vs. /si:l/.