Here is some more info:

1) It is useful to think about the problem of "spherical codes" (a set of points in S^n with minimum distance alpha). Understanding densest Euclidean packing amounts to understanding spherical codes when alpha tends to zero. You can ask about codes in other symmetric spaces. An example worth mentioning is binary codes with presecribed numbers of '1's and '0's.  


2) Random constructions give the best known asymptotic constructions for spherical codes (and sphere packing) and for binary codes. It is a fundamental open problem if these random constructions give the best rate of error correcting binary codes and of spherical codes.

For codes over a large alphabet there are better constructions based on algebraic geometry. For these constructions no analogous for spherical codes are known. (Sometimes people raise doubts if the Hamming distance is appropriate for large alphabet codes.)

3) Several basic techniques for proving upper bounds are common to all these types of codes including the Delsates LP method and recent extensions by Schrijver to semi definite programming.

4) There are various differences. For example, the best known kissing number (or [expected]occurence of miimal distance from a point) for binary codes is exponential in the dimension while for sphere packing it is quasi-polynomial.