NotebookWrite[notebook, data] writes data into a notebook at the current selection, setting the current selection to be just after the data written.
NotebookWrite[notebook, data, sel] writes data into a notebook setting the current selection to be as specified by sel.
The first argument of NotebookWrite is a NotebookObject.
NotebookWrite does essentially the same as a Paste operation in the front end: it replaces by data whatever the current selection in the notebook is.
NotebookWrite is the basic way to use the Mathematica kernel to modify the contents of notebooks that are being manipulated by the front end.
NotebookWrite automatically wraps Cell around the data you specify if this is necessary.
Possible settings for sel are:
The default for sel is After, so that NotebookWrite[obj, data] can be called repeatedly to insert several pieces of data in sequence.
See The Mathematica Book: Section 2.10.3.
See also: NotebookApply, NotebookRead, NotebookDelete, SelectionMove.