Here's a rather unsophisticated approach. The code below creates a toolbar in the current notebook, with buttons to create, refresh and close a replica notebook. The replica is given a gray background and cannot be edited or evaluated.
I tried to do something with Dynamic
to automatically refresh the replica notebook, but without success.
Update
Here is a neater implementation. The code below creates a palette (which can be installed using the menu: Palettes/Install Palette) containing a single button to create a duplicate of the active notebook. The update button for the duplicate is now located in the duplicate itself, leaving the original notebook unchanged. The duplicate is closed using the normal window close button, but it has "ClosingSaveDialog"
set to False
so you won't get a save prompt.
CreatePalette[Button["Duplicate Active Notebook",
NotebookPut[NotebookGet[InputNotebook[]] /.
{Rule[DockedCells, _] :> Sequence[],
Rule[WindowMargins, _] :> Rule[WindowMargins, {{0, Automatic}, {0, Automatic}}],
Cell[x___] :> Cell[x, Evaluatable -> False]},
Background -> GrayLevel[0.95], Editable -> False, "ClosingSaveDialog" -> False,
DockedCells -> With[{sourcenb = InputNotebook[]},
Cell[BoxData[ToBoxes[Button["Update",
SelectionMove[InputNotebook[], All, Notebook];
NotebookWrite[InputNotebook[],
NotebookGet[sourcenb] /. Cell[x___] :> Cell[x, Evaluatable -> False]]]]],
"DockedCell", CellContext -> Cell]],
WindowTitle -> "Duplicate of " <> AbsoluteOptions[InputNotebook[], WindowTitle][[1, 2]]];
SetSelectedNotebook[InputNotebook[]]], WindowTitle -> "Duplicate"];