I can see how this happened, sadly.
Costa Coffee (or any coffee shop) is a busy and noisy environment. The Mum was likely in a hurry, fitting in a hot chocolate before the appointment (the fact that she didn't start drinking it until she was at the dental surgery means that it was served shortly before arriving). She said 'I'll have two soya hot chocolates but the jug needs to be washed out because of allergies'. The server heard 'hot chocolate', then got focused on "Why would you want the jug washed out if you're having milk in your hot chocolate??". The Mum was probably used to asking for it, knew she had asked for it, so thought the server was saying 'the jug is used for normal milk', but was happy with washing it out as a protective measure, so reassured the server that she understood and was happy.
Presumably, the cows milk was used but the Mum didn't see that (I always watch them prepare my drink) because the daughter was telling her off for 'being fussy'. I presume, also, that a 'S' or 'Soya' wasn't written on the lid (because the soya milk order hadn't been registered) but the Mum didn't notice that, or didn't think it was a problem.
The dental surgery offered the epi-pen, but the Mum had obviously never needed one before and perhaps didn't register the severity of the reaction. Once at the pharmacy, it was too little too late.
I don't think the server is fully to blame here. In hindsight it's an extraordinary risk for the mother to take - I always cringe a bit when I see baristas wiping the frother with the same crusty old cloth time and again - regardless of what milk was used, there was bound to be cross contamination.
I'm not sure that even the allergy book would have helped, because fundamentally, the mother was confident that soya milk was being used, and the server was confident that cows milk was being used, so if the mother had looked at the book and said 'yes that's fine...', they would have been confirming different things.