Блоки это обычные html div, 
используем
jquery - общий функционал
jquery ui dragable -  для перемещения блоков
jquery ui resize - для изменения размеров блоков
при перемещении блока нужно отловить событии и переместить все связанные линии следом.
при удалении блока нужно отловить событие и удалить все связанные через таргет или source линии.
связи реализуются силами SVG, 
один из примеров SVG линий из библиотеки raphael   
http://raphaeljs.com/graffle.html
схема описывается как граф. (использовать  обьекты или массивы для описания нод и рёбер, это скорее дело вкуса)
model={
    node:{
         "1":{x:10,y:10,width:50,height:20,text:"я первый блок"},
         "2":{x:110,y:110,width:50,height:20,text:"я второй блок"}
    },
    edge:{
         "3":{source:"1", target:"2" }
    }
}