A language's phonology is a system of sound contrasts. "B" and "p" are considered different consonants in English; these are bilabial plosives that contrast according to whether the sound is voiced (involving the vibration of the vocal chords) or not, and thus you can have separate words that contrast in just this feature, e.g. bin and pin, bot and pot, back and pack, etc. Other details in the articulation of these sounds do not contribute to the contrast. So, for instance, in English we regularly aspirate the "p" when it is the first sound in a word but not the "b". Say "pack," "pin", "pot", and you will hear or feel a puff of air following the consonant that we don't say when we articulate "back", "bin", and "bot". One could say "b" with a little puff of air (i.e. b h I n for "bin"), but it would not be regarded as some entirely different consonant; it would just be "b" with a little puff of air (maybe said that way if the person is out of breath or while lifting something). In Hindi, however, there is a contrast between [p] and [p h ] and between [b] and [b h ], e.g. pal "take care of" and p h al "edge of a knife", bal "child" and b h al "forehead". Because of English phonology, it may be hard for an English speaker to pronounce Hindi correctly. Because aspiration after "p" is obligatory in English, an English speaker may pronounce pal as p h al, which would be like someone saying "shave" for "save" in English. Or the English speaker might pronounce it as "b", since English speakers are not used to hearing the aspiration after the "p"; an unaspirated "p" sounds like a "b" to an English speaker, which is never aspirated in English.
Dialects may also differ according to phonemic contrasts; a good example in English are the dialects where postvocalic "r" is pronounced rhotically and those where it is not. So some may pronounce "dear" as "deah", and if they try to "correct" their speech to insert rhotic "r"s where their natural speech lacks them, they might make mistakes like saying "idear" for "idea".