Modelling one irregular surface to fit against another
Use the Shrinkwrap modifier with vertex groups. 
Select the cushion you want to deform add a shrink wrap modifier, in the target option select the second cushion, change the order of the modifier to make sure the shrinkwrap modifier is below the subsurf modifier, then in edit mode (for the first cushion) select the vertices thats touching the second cushion and add them to a vertex group(go to object data properties, select the plus sign under vertex group, rename the group if you want, then with the desired vertices selected in edit mode click on assign), deselect everything and click the select button under the vertex group option to make sure only the desired vertices are part of the vertex group, then in the shrinkwrap modifier, under the vertex group options select the vertex group you just created.
And you should be good. Just make sure not to move the second cushion cause it is using it as a reference, if you do the first cushion would get distorted.