Take a look at how the following code works to get some insight into how to handle a problem like this using CellTags.  I am interpreting you question about opening and closeing a cell as wanting to hide the cell rather than in terms of opening and closing CellGroups.  But the latter can be handled along similar lines.
 CreateWindow[
  DocumentNotebook[{
    TextCell["Cell one", "Text", CellTags -> {"cell1"}],
    TextCell["Cell two", "Text", CellTags -> {"cell2"}],
    TextCell["Cell three", "Text", CellTags -> {"cell3"}],
    TextCell[
     Row[{
       Button["Open",
        Module[{nb},
        nb = EvaluationNotebook[];
        NotebookFind[nb, "cell2", All, CellTags, 
         AutoScroll -> False];
        SetOptions[NotebookSelection[nb], CellOpen -> True]
        ]],
      Button["Close",
       Module[{nb},
        nb = EvaluationNotebook[];
        NotebookFind[nb, "cell2", All, CellTags, 
         AutoScroll -> False];
        SetOptions[NotebookSelection[nb], CellOpen -> False]
        ]]
      }
     ],
    "Text"]
   }
  ]
 ]
For a lot more detail on working with various sorts of tags take a look at the Mathematica conference talk I gave several years ago either at 
http://scientificarts.com/worklife/conference2008.htmlor at
http://library.wolfram.com/infocenter/Conferences/7246/Hope this helps...