1) Any page can show page links and blog posts. Use wp_list_pages() to display a list of page links, or get_pages() to get an array to use in other code, in the appropriate template file.
2) WordPress and its themes are written in PHP.
3) You probably want to look at some of the existing themes to get an idea of what a theme looks like in terms of files and their contents. The default theme that comes with WP 3.0 is a good one to look at, better than the default theme of previous versions.
4) There are no design limitations. You can turn literally any design into a WordPress blog. Take the design, code it in HTML/CSS, save the HTML as index.php, save the CSS as style.css, and replace the content text with the WordPress code snippets that display the content.