Personally I would shy away from using embeds to store content that you'll need to access across multiple pages (unless you need to pass a variable). The problem with embeds is they are a single database call for each embed template you reference in the page. If you have five embeds, that's five round-trips to the database. Snippets and global variables are loaded with one call at the beginning of every request. If you don't need to pass variables, then you snippets/global variables are ideal.
A solution I've started to use is utilizing SnippetSync which allows me to save snippets and global variables as files. This allows for easy editing and version control without sacrificing performance.
So your main template will look like this:
Header Snippet - site_header.html :
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>My Site</title>
...
</head>
<body>
<!-- end site_header -->
Footer Snippet - site_footer.html :
<!-- start site_footer -->
</body>
</html>
Main Template:
{site_header}
<!--my content -->
...
<!--/my content -->
{site_footer}
EE's User Guide has a good run-down on Snippets and how they're different than Global Variables & Embeds.