i18n is mostly a software engineering work; you have to deal with code. The simplest concept is moving hard code Strings out of the source code so as to reduce the interaction between translating String seen by the user and moving them back as resource files or database values or whatever depending on your i18n framework of choice. In i18n, you deal with logic, UI, databases, Left to Right scripts, etc. so as to get a code base that is fairly orthogonal to locale (language/countries) specificities. You may have strategies to deal with business logic specific to a country (i.e. taxes). You probably handle formatting simple items, like date/time, currency, etc. and maybe complex ones (addresses, imperial calendar) which might require some design in terms of data base, logic, UI, etc. Kinda depends on your target locales.
L10n should come in afterwards and is not the work of software engineers. For the most part, it is "localization" companies, with translators, who do that part of the work.
i18n and L10n are both necessary components of a G11n strategy. The planning, QA, etc. need to take into account both sides, as there are integration issues from one world to the other.
Hope that helps.