you have two questions:
'Is it possible to remove the "development" branch off dirB, then create a new "development" branch on dirA ?
the answer to this is "yes", but it will mean different things depending upon what you mean by a directory structure dirA/dirB/dirC committed into CVS.
if you have a single repository, and the directory structure is all contained under a single cvsroot rooted at dirA, then removing the "development" branch off of dirB will mean removing the "development" branch off of everything under cvsroot. at that point creating a new "development" branch on dirA will cause all files in the entire hierarchy to be branched as you desire.
if, instead, you mean you have a local directory structure dirA/dirB/dirC, and you have dirA committed to CVS hosted at one CVSROOT and dirB committed to CVS hosted at another cvsroot, then what you do to dirA and dirB will be independent of one another to the extent that you kept dirB from being committed to dirA's cvsroot. if you have things set up this way, you'd be best off maintaining the archive you spoke of, removing all CVS subfolders from all folders at all depths of dirB, then get it committed to dirA so it is part of the same cvsroot, and then just add "development" as a branch as you desire.
your second question: 'will anything break if we do a "cvs -dB development dirB", then re-create the branch on dirA?'
the answer to this is basically 'no, other than you won't be able to access things by checking out branch "development" any longer; you'll still be able to get them by individual commit, and as you said, the history and state is trivial'. if you have things set up the first way, it will be as you suggested, a quick remove then re-creation at the proper level. if you have things set up the second way, the deletion is unnecessary, but cleaning out the CVS subdirectories and then getting dirB committed underneath dirA will be essential to put everything under one cvsroot, at which point, nothing will break by adding the "development" branch.