Hamlet calls Horatio "one, in suffering all, that suffers nothing." He does appear to have a very even keel emotionally. His low-key responses highlight Hamlet's wit: He replies to Hamlet's "I thought it was to see my mother's wedding" with the mild "Indeed, my lord, it followed hard upon." Hamlet's "Do you think Alexander looked thus i' th' earth?" elicits a mere "E'en so, my Lord."
Horatio is always the voice of reason and skepticism. When he sees the ghost, he says, "I might not this believe without the sensible and true avouch of mine own eyes." Hamlet chides him with his famous "there are more things in heaven and earth than are dreamt of in your philosophy" with being too much the voice of reason. He warns Hamlet not to follow the ghost, and later, not to accept the challenge of fighting Laertes. His policy both for himself and in his advice to Hamlet is to avoid potential conflict and danger, which demonstrates that Hamlet is not afraid of either, and indeed rushes to meet both.
Horatio is also Hamlet's conscience. When Hamlet explains how he has arranged for the deaths of his two spying school pals, Horatio mildly admonishes him with "So Guildenstern and Rosencrantz go to it," which prompts Hamlet to defend himself with "Why man they did make love to this employment." But we tend to feel with Horatio that it was a bit excessive.
In the end, the laconic and emotionally repressed Horatio is commissioned by Hamlet to "tell my story", a task for which we would have thought him unfit, except that the death of his friend brings poetry to his lips: "and flights of angels sing thee to thy rest." Sure enough, Horatio the stoic, Horatio the dutiful and faithful friend, takes up the duty Hamlet has placed on him and begins to "tell his story" to Fortinbras.