IE, Firefox and Chrome all use different rendering engines, and when web developers are setting up their CSS (Cascading Style Sheets; basically one central document that defines things like fonts, line spacing, colours, positions and what-not, so that your entire site can simply reference this document. This means that when you want to change an element of your site's layout, you do NOT have to go and edit some lines of code in the 1,000 pages on your site: You simply change your CSS file(s) and immediately the entire site reflects the change) they have to do a alarming amount of work to accommodate the separate parts of the CSS specifications that each rendering engine does NOT conform to. Each of these rendering engines has tags that only it knows how to parse, and some browsers (cough, IE, cough) blatantly ignore major sections of the CSS spec.
It happens, then, sometimes, that developers will code a site either with generic CSS code or with code that caters only to the rendering engine they are using directly (this happens a lot with developers using Mac's and Safari or Chrome) and not realizing that font kerning, positioning and all sorts of other things look different in these differing rendering engines. All you need is for something to be improperly positioned by a few pixels on the screen before you start running into situations where something overlaps something else - or worse, bumps something else out of the way or onto a new line - and you, in very short order and due to something that might seem innocuous enough to even get by someone auditing the code, have a complete mess on your hands. A lot of my time spent developing sites is spent troubleshooting these rendering discrepancies; even after having been aware of them for years. It is enormously frustrating.