How to load a Custom PHP Magento Block inside a template file

Loading a block from a template file is a very bad style, but it is possible.

The dirty way from a template file

echo $this->getLayout()->createBlock('catalog/product_bestseller')->toHtml();

The clean way:
Modify the corresponding layout XML file and add the block, then refer to it with

echo $this->getChildHtml('product_bestseller');

If you want to add a block to a cms page use the Layout Xml Updates section under Design:

<reference name="content">
    <block type="catalog/product_bestseller" name="product_bestseller" />
</reference>

this worked as of 1.5.1, also allows you to relocate the template

$block = $this->getLayout()
         ->createBlock('catalog/product_bestseller','product_bestseller',
                       array('template' => 'pathTo/template.phtml'));
echo $block->setBlockId('whatever')->toHtml();