I think it is possible to do the following:
* To submit a Cost Plan for Budget Approval:
- Xog out a Cost Plan
- Read the Cost Segments
- Prepare a Budget Plan Xog, and Xog it in
* To approve a Budget Plan there is an option in System Actions (whose process is linked to "Cost Plan" object), to "Approve or Reject Budget Plan"
It would however require a direct delete operation on the database to remove a cost plan I think. And since there are multiple tables involved in holding a Cost Plan's data, this delete operation would have to span multiple tables. It would also not be a supported method.
To remove a custom object instance again would have to be a DB operation. But since in most cases the data resides in just one table (of the format ODF_CA_<customObjectID>), it should be simpler here. But again, this would be an unsupported method.