Welcome to SitePoint Anthony.
Good effort! What you did is TECHNICALLY valid*, but it can be accomplished far more efficiently and far more semantically correct.
* Your only actual technical problem was that you used vendor specific CSS properties. You really dont want to fall into that trap, if you can avoid it. -moz-column-count: 4; only works for Firefox! Oh and some folks consider it somewhat dubious to put block elements, such as Ps adjacent to inline elements such as IMGs ( still your code your, technically, pass validation)
Let start from scratch, shall we?
Code:
<ul id="icons">
<li id="telephone"><img src="icons/telephone.png" class="icon" alt="telephone icon" />01244 ?</li>
<li id="mobile"><img src="icons/mobile.png" class="icon" alt="Mobile icon" />07779 ?</li>
<li id="email"><img src="icons/email.png" class="icon" alt="Email icon" />Jo...@aol.com</li>
<li id="location"><img src="icons/location.png" class="icon" alt="Location icon" />Chester, Cheshire</li>
</ul>
See ma, no divs ( as none were actually needed).
You information was a LIST so we might as well replace the outermost DIV with UL, and thus the children become LIs instead of DIVs.
You don't need the P as we can achieve the effect w/o the extra tag using CSS.
With the CSS you have two options for lining up the LIs horizontally: display:inline-block; or float:left;
Code:
#icons {padding:0 0 0 .3em;list-style: none; width: 80%; margin:0 auto;}
#icons li {display:inline-block; outline: 1px solid pink; width:25%;text-align: center;margin-left: -.25em; vertical-align: top;
}
#icons li img {width: 50px;height: 50px;padding-top: 15px;display:block; margin:0 auto;}
OR
Code:
#icons {padding:0;list-style: none; width:80%; margin:0 auto;}
#icons li {float:left; width:25%;text-align: center; }
#icons li img {width: 50px;height: 50px;padding-top: 15px;display:block; margin:0 auto;}
hope that helps!
Bookmarks