Yup. Personally I would also be tracking the nodes as members of the chart itself, but that's besides the point.
Sounds too complicated.
Speaking of complicated, you could create a NodeCollection object that offers iteration by category and series. The series and category objects then use that collection instead of managing their nodes manually. I'm leaning towards this.
Having links on both ends makes it harder to move things around, as you have to remember to update both links, but it's not too unreasonable to do so.
Meh. If the id isn't set then there's no operations to clear it, but instead it adds operations to check the value. More lines of code for no net benefit.
The nodes must be cloned because they can/should only belong to one chart. No cloning means you are reusing them in two places. Same reason you have to clone the series and categories.