В контроллере держите список редактируемых элементов. А в нем уже потом добавляете/редактируете данные.
Коротко по некоторым пунктам (другие слишком очевидны, по-моему):
2. Появляется форма(в модальном окне)
https://github.com/likeastore/ngDialog4. Потом это модальное окно можно снова открыть. изменить поля, нажать отмена и поля останутся старыми. Или нажать сохранить и поля изменятся
В модальном окне используется отдельная переменная, после чего при сохранении - пишется/обновляется элемент в списке, при отмене - ничего не делается.
8. Ну а потом в нужный момент все это отправляется на сервер :)
Для этого добавляете сервис (не делайте запрос в контроллере), через него и взаимодействуйте с сервером.
Писать за меня это естественно не нужно. Если это делается на angular - ткните в нужное место в документации.
Как и было сказано, это обычные CRUD операции, которые очень просто реализовать