Hm, well, 着 and 了 don't have much in common. But both "zhe" 着 and "lai" 来 are used a whole bunch of different ways. Luckily for us in this particular story, 着 is simply "zhe" (it has lots of pronunciations), and is being used in the most traditional sense of the word. It's similar to the English suffix "ing", like "running", "jumping", etc. So it's not a completed action, but an action in progress. Zhe is used a lot here:

浩浩低着头、红着脸、扯着衣角，不好意思地向妈妈走去，嘴里念叨着: "..."

Maybe it would help if I re-translate that as: "Hao Hao, hanging his head, with a reddening face, picking at the corner of his jacket, went over to his mother in embarrassment, saying: "..."

See all those "ing"s? HangING his head, reddenING face, etc. That's where "zhe" comes in. I just didn't write it quite that way in my translation above because it didn't read quite right in English.

In terms of 来, it does mean "come" much of the time, but it doesn't mean that here. Here, this: 仰起头来  is actually just this: 仰头 plus this: 起来. Not really sure why you can flip the 头 and the 起 in this case, but I'm guessing because "head" 头 is a thing, and 仰 is an action. We could say  仰起来, "to raise up" easily, but now where in this sentence do we say what we are raising up? 仰起头来 is probably like the English "Raise one's head up."  

Also, consider this Chinese phrase, in which lai has a similar meaning: 

我抬起头来看. This just means "I raised my head and looked." It does not mean, "I raised my head, came / went  somewhere, and looked."

So, 浩浩仰起头来 just plain means "Hao Hao faced upward" (previously, he was facing downwards, we can presume).  And as we know, 起来, in this case indicates that an action went from one state to another state. If you're not familiar with 起来, other examples of this would be 站起来 (to stand up, when you are sitting or lying down), 跑起来 (to start running), etc.