Subdomains (e.g. blog.domain.com) are easy to create using the virtual subdomain feature that every shared hosting account comes with. Simply locate the document root for domain.com, create a blog directory there, and upload your contents. This means that http://blog.domain.com/ and http://domain.com/blog/ will in fact serve the same contents.
This is something that you can only use for static, HTML-based sites and sites based on scripting languages executed by the Apache web server directly (e.g. PHP based applications). This feature will not help you to serve a proxied application (e.g. a Rails application) on a subdomain only for instance. For proxied applications, see the respective page on proxying to a port and the section on subdomains.
Also note that you will hit problems if you try to use mod_rewrite or MultiViews on a virtual subdomain. Follow the the specific article on mod_rewrite on a subdomain for a work around.
And finally, if you have index.php in your document root, and index.html in your subdomain directory, your main domain will still show up instead of the subdomain, because Apache doesn't handle the priorities correctly with virtual subdomains. The solution is to override the order for the subdomain, placing the following line into a .htaccess file inside the subdomain directory:
DirectoryIndex index.html