Can I edit single timestamp so it recalculate all the following timestamps in a table?
I wouldn't recommend to create a trigger for this, as it can have unwanted side-effects.
A stored procedure just for this purpose seems more appropriate to me. Something like this:

DROP TABLE IF EXISTS tasks;
CREATE TABLE tasks
    (`id` int, `task` varchar(13), `start_time` time, `end_time` time, `minutes` int)
;

INSERT INTO tasks
    (`id`, `task`, `start_time`, `end_time`, `minutes`)
VALUES
    (1, 'Send email', '12:00', '12:10', 10),
    (2, 'Design banner', '12:11', '12:36', 25),
    (3, 'Call Jake', '12:37', '12:42', 5)
;

DROP PROCEDURE IF EXISTS adjust_task_times;
DELIMITER $$
CREATE PROCEDURE adjust_task_times(IN p_new_time int, IN p_which_row int)
BEGIN
DECLARE diff_times int;

SET diff_times = (SELECT p_new_time - minutes FROM tasks WHERE id = p_which_row LIMIT 1);

UPDATE tasks SET minutes = p_new_time, end_time = ADDTIME(end_time, diff_times * 100) WHERE id = p_which_row;
UPDATE tasks SET start_time = ADDTIME(start_time, diff_times * 100), end_time = ADDTIME(end_time, diff_times * 100) WHERE id &gt; p_which_row;

END $$
DELIMITER ;

CALL adjust_task_times(15, 1);

SELECT * FROM tasks ORDER BY id;

+------+---------------+------------+----------+---------+
| id   | task          | start_time | end_time | minutes |
+------+---------------+------------+----------+---------+
|    1 | Send email    | 12:00:00   | 12:15:00 |      15 |
|    2 | Design banner | 12:16:00   | 12:41:00 |      25 |
|    3 | Call Jake     | 12:42:00   | 12:47:00 |       5 |
+------+---------------+------------+----------+---------+


In case you're wondering, this

ADDTIME(start_time, diff_times * 100)


looks a little odd. Why the 100? In this example the diff_times variable has a value of 5. 5 times 100 equals 500, which is in this case short for 00:05:00

For more details see the manual entry for ADDTIME().