Is the consonant [b] always voiced across languages? What about [p] being voiceless? Similarly, is [k] always voiceless across languages?
Basically, I am taking what I know in English and wondering if it applies more broadly.
It depends on what is meant by "[b]".
Usually, a transcription in brackets means that it's a phonetic transcription, which aims to represent the sounds uttered without considering whether the language makes a phonemic distinction between them.
Under the strictest interpretation, [b] is voiced by definition, since that IPA symbol represents the voiced bilabial plosive. In other words, the "cardinal" or prototypical value of [b] is voiced.
But more commonly, phonetic transcriptions can also be broad, meaning that they notate only the most salient features, or those that are likely to be linguistically significant. For instance, one can transcribe the American English word buddy as ⟨[ˈbʌɾ.i]⟩. This is clearly a phonetic rather than phonemic transcription, since it indicates the specific allophone ([ɾ]) of /d/ that gets used. But it is a broad transcription. In English, utterance-initial voiced stops are usually partially devoiced, which is rarely noticed by native speakers. So this transcription is using ⟨b⟩ to denote a partially-devoiced phone.
Of course, even in a narrow (precise) transcription, ⟨b⟩ may be used to represent a voiceless phone when it is used with a diacritic. For instance, one might transcribe the Russian word го́лубь (gólubj) as [ˈgolˠʊb̥ʲ] to indicate that the final consonant, though phonetically voiceless, is an underlyingly voiced sound that is devoiced by a phonological process.
In a phonemic or morphophonemic transcription, the symbol ⟨b⟩ can easily refer to a voiceless stop. Many languages do not distinguish between voiced and voiceless stops. For example, Korean has a series of stops that vary between voiced and (tenuis) unvoiced. Authors can somewhat arbitrarily pick which allophone to use to transcribe each phoneme; in this case, one might pick the voiced IPA symbols to help distinguish them from Korean's 2 other series of voiceless stops. Then the word ⟨불고기⟩ would be phonemically transcribed as /bul.ɡo.ɡi/, even though the initial consonant is voiceless.
I would add that, phonetically, voice is a matter of timing, more precisely of the VOT or Voice-Onset Time, which refers to the time when your vocal folds begin to vibrate with respect to the moment of release of the consonantal "blockage". Generally, there is a continuum of values, spanning from voiced consonants, having a negative VOT, to voiceless aspirated ones, which have a positive VOT. Voiceless unaspirated consonants would probably have zero VOT or one that is slightly positive but still close enough to it.
Languages may differ in how exactly they segment the VOT continuum and how they employ it within their phonological systems. That is why it may be quite tricky to compare voiced/voiceless consonants of one language to voiced/voiceless consonants of another. In two-member systems like that of English, it is sometimes more convenient to talk about fortis consonants and lenis consonants, one of whose phonetic correlates may be zero-to-positive/negative-to-zero VOT, depending on factors such as the position of stress (again, phonetically, fortis/lenis usually refers to relatively greater/lesser energy needed to pronounce them).
An interesting case could be some German loanwords in Czech. Both languages have a fortis/lenis consonants of a sort, but they differ in the specifics. Czech, for instance, has borrowed the word <Blech> "sheet metal" from German, but the lenis stops in the source variety of German had a VOT value so close to the VOT of the fortis stops in the latter, that the latter has borrowed it as <plech>. Similarly, <Gesicht> "face" has been borrowed as <ksicht> "mug, kisser" (slang "face"), and so on.
Also, wrong VOT values seem to be one of the most common and typical pronuciation mistake among Czech (and other Slavic) learners of English: our lenis VOT is way too long (too negative), which isn't a big problem, but our fortis VOT is way too short (too close to zero), which may sound like English lenis. Moreover, English fortis stops can have their VOT considerably longer in certain positions, producing aspiration, which never occurs in Czech (at least not systematically).
Hence, Czech /b/ does sound like /b/ to the ear of a native English speaker most of the time, but so may Czech /p/. The issue is a bit more complicated, because lenis segments are generally shorter than their fortis counterparts cross-linguistically, which is fairly frequently, though not completely universally, compensated for by the length of the preceding vowel (vowels tend to be a bit longer before voiced and shorter before voiceless consonants). Hence, languages might employ phonetic clues other than just VOT to make distinctions between the different series of consonanants more conspicuous and easier to perceive.
Now, as mentioned above, some languages may not employ the voicing distinctions systematically, hence replacing [p] by [b] doesn't change the meaning of a word (although it may be perceived as "sounding odd") - in such cases, we usually say that voicing is not phonological. It doesn't mean, however, that we cannot describe the level of voicing (VOT) of a particular consonant when it is pronounced. It may only differ in a way that makes it difficult to choose the right cover symbol. But that's a topic for phonology rather than phonetics, and I'm not sure how deep in this topic you would like to immerse.
A brief summary:
Note that there are languages that do not have the contrast voiced/voiceless for stops. When you write such a language you can choose b or p for the bilabial stop without making any assumption on its (irrelevant for that language) voicedness. This happens, e.g., for many Australian languages (cf. https://en.wikipedia.org/wiki/Australian_Aboriginal_languages#Phonetics_and_phonology )