NOTE: The whole answer is for QGIS v3.x (currently v2.99).
Copy Features / Paste to layer
These functions are now available in QGIS master (v2.99) and will be included in QGIS v3.0. You can use them from your plugin in this way:
self.iface.copySelectionToClipboard(source_layer) # A prior selection is expected
target_layer.startEditing()
self.iface.pasteFromClipboard(target_layer)
target_layer.commitChanges()
Merge
As of now, merge functionality is not exposed through the QGIS Python bindings. However, you could do one of the following:
Port C++ code to Python. For instance, I've done that partially (except attribute handling) in a new plugin I'm developing. See merge-boundaries function.
Trigger QGIS Merge Selected Features action. Locate the merge selected features action (button) and trigger it:
iface.mainWindow().findChild(QAction, 'mActionMergeFeatureAttributes').trigger()