Once a page was created, it is easy (since we have all the information at hand) to know which file will be loaded from that HTML. For example, the HTML header may have links reference CSS files.
The fact is that a TCP connection is generally slow so if you can avoid 50% of them, especially if these are for very small files (1Kb and less) then all the better.
Inline Data can be used to avoid allthose useless TCP connections.
HTML allows for CSS data and image data to be inlined.
CSS uses the <style> tag in the HTML header. (See Style Sheet in HTML)
Note that this is not 100% true since a CSS file or an image that is loaded separately will be cached separately. So on the second reference those files won't be reloaded using TCP. Instead the browser uses the cached version.
This being said, for CSS data and images that are dynamic (changing quite often) the cache would not do much good.
Interesting points from the Wikipedia page: