1) Workflows (Easier, but has limits)
2) Trigger
I am sharing the code with you for creating a checkbox. If set to true, create a task for reminding after 30 days, if deactivated, delete the task.
for (Contact c :trigger.new){
contact oldc = trigger.oldmap.get(c.id);
if(c.Activate__c==true && oldc.Activate__c==false){
task t = new task();
t.subject = 'Reminder about calling Contact';
t.whoid = c.id;
t.isreminderset = true;
t.reminderdatetime = system.today()+30;
t.status = 'In Progress';
t.IsRecurrence = false;
insert t;}
else if(c.Activate__c==false && oldc.Activate__c==true){
List<task> t = [select id from task t where t.whoid=:c.id and t.subject='Reminder about calling Contact'];
delete t;
}} }

