The MousePosition you are using will be in screen coordinates, so you need to translate them to the Form's coordinates:
node.Location = PointToClient(MousePosition);
Note that the MousePosition you will see at the time the menu click event fires will be the location of the mouse when you click the menu item, not the location when right click to open the context menu.
A couple of other comments:
Don't create a new nodeTree in the click event - that will remove the previous tree and the count will never be over 1. Create it in the constructor or in the line where you define the class member.
Don't create class member variables for "node" or "location" they are only used in the click event handler, and should be defined there.
In the last line, you don't need to retrieve the node from the list, you already have a reference to it.
public partial class MainForm : Form
{
private List<GenericNode> nodeTree;
public MainForm()
{
InitializeComponent();
nodeTree = new List<GenericNode>();
}
private void testitemToolStripMenuItem_Click(object sender, EventArgs e)
{
GenericNode node = new GenericNode();
nodeTree.Add(node);
node.Name = "node" + nodeTree.Count;
node.Location = PointToClient(MousePosition);
this.Controls.Add(node);
}
}