So, first of all, when we talk about sounds we are often talking kind of metaphorically: in linguistics I can describe ‘i’ as a “high, front” vowel, because I’m talking about where the tongue is positioned in the mouth, but in a non-technical context we might just say that ‘i’ sounds ‘brighter’ than, say, ‘o’. So although ‘soft’ is the word people use, it’s just a metaphor. (Another more old-fashioned and technical term is ‘lenition’, which means making sounds ‘lighter’ or ‘weaker’ – because consonants like c/p/t were known to linguists as ‘fortes’ – ‘strong’ sounds. It’s all just metaphorical, only this time in Latin.)
And you’re right about c/g etc.: the difference in Welsh and English is bigger than the difference in Italian, but even so I’m sometimes still not sure whether I’ve heard @aran say a ‘c’ or a ‘g’.
The difference in English is bigger than Italian because there are two differences in English, and only one in Italian. In both languages one sound of the pair is ‘voiced’ and the other is ‘unvoiced’, and that’s what we think of as the main difference: a voiced sound is one that makes your vocal cords buzz, while an unvoiced one is one you can whisper. The easiest pair to do this with is probably f/v (Italian/English spelling): if you place your fingertips against your throat and alternate saying fffffff / vvvvv you can feel the difference.
But it’s actually the other difference, that most English and Welsh speakers probably aren’t aware of, that helps account for c/p/t sounding ‘harder’ or ‘harsher’ to us than g/b/d (hence the ‘softening’ metaphor). For this one it helps if you roll your own cigarettes, or know someone who does (although a strip of tissue paper will do), and have access to a native English or Welsh speaker. You see, there are two different sets of c/p/t sounds in English. One, after ‘s’ in words like Scot, spot, stop, sounds like Italian – the only difference from g/b/d is the voicing. But the other – initial English c/p/t as in cot, pot, top – is normally ‘post-aspirated’: they’re followed by a puff of air almost like an English or Welsh ‘h’, which most speakers are completely unaware of. And this is where the native speaker and the cigarette paper come in: if a native speaker holds a piece of thin paper up in front of their lips as they say ‘spot - pot - spot - pot’ you can see the difference. When they say ‘spot’, the paper will move a bit – when they say ‘pot’ it’ll be much more dramatic, because of that extra puff of air. Alternatively, get someone who speaks Italian with a really English accent, and listen to them trying to say capra. See how wrong it sounds!
(Actually, as I was thinking about this I realized that the Welsh spellings with g/b/etc. for borrowed words like esgus and sbâr – for ‘excuse’ and ‘spare’ – might reflect an earlier scribal awareness of the difference between English sc-/c- and sp-/p- sounds.)
So anyway: in certain situations ‘stronger’ / ‘harder’ / ‘harsher’ sounds tended to get made ‘weaker’ / ‘softer’ by being voiced, and losing post-aspiration if they had it. In the same contexts existing voiced sounds were made weaker by being relaxed a bit, so that instead of stopping the air flow it was allowed to go through as a sort of a hiss or buzz (fricatives): so d becomes dd and g goes from Italian to Spanish-style before vanishing. In the same way b became like a Spanish b(β) – a v, but with both lips rather than bottom lip and top teeth – before shifting to a labiodental (lips and teeth) v as it is today; m seems to have been more or less the same, but with a nasal sound to it, before settling down to an ordinary v as well.
At roughly the same time, the reverse happened to initial r and l – in certain contexts (mostly where the other sounds weren’t softened), they got ‘strengthened’ with extra breath instead, becoming rh and ll. If you look up Welsh grammar mutation rules online (suggestion: don’t bother) you’ll see that there are a few circumstances where the other sounds get softened, but rh and ll don’t.
Oh, and the change in Italian that turns ‘c’ from capra into ciao when it’s followed by an ‘i’ or an ‘e’? It also happened in Old English, too: cycen (modern ‘kitchen’) is the same word as cucina and cegin