Source: Adam Hopkinson
You don’t need to interact with the API, or use a plugin.
First, duplicate post.php or page.php in your theme folder (under /wp-content/themes/themename/).
Rename the new file as templatename.php (where templatename is what you want to call your new template!). Enter the following code <!–?php /* Template Name: templatename */ ?–> at the top of the new file:
You can modify this file (using php) to include other files or whatever you need.
Then create a new page in your wordpress blog, and in the page editing screen you’ll see a ‘Template’ dropdown in the ‘Attributes’ widget to the right. Select your new template and publish the page.
Your new page will use the php code defined in templatename.php