1. Go to Create | Web Part Page. The page you create is “ghosted”.
2. Open the page in FrontPage.
3. Make a change and hit save. Your page is now “unghosted”.
Difference between #1 and #3? Huge.
In #1, the ghosted page is basing its content from the template which exists on the file system. The asp.net parser renders the page.
In #3, the unghosted page content is taken from the database. When you saved the page in FP, the "template" contents from #1 were copied over to the database. All future versions of that page are now based off the database copy, not the file system copy. The page is now controlled by the SafeMode parser.
So how do I know which is which? use ghosthunter found as part of the handy webpart toolkit again from bluedog
and here is how to create those tasty ghosted pages programmatically