As you correctly pointed out, it is relatively complicated and error-prone to retroactively create points on an existing mesh, instantiate objects on them, and align them along a specific direction (or in this case along two directions).
Simpler or better would be the following setup:
Here I don't use the mesh created by the "Sapling Tree Gen" addon, but only the curves, and transform them into a mesh using Geometry Nodes.
The result is technically the same, but in this case I can directly process the curves and their parameters in Geometry Nodes.
First of all, if you created the tree with "Sapling Tree Gen", you need to disable the Curve Bevel that is automatically added when creating the tree (The setting for this can be found in the Object Data Properties under Bevel. There you set the value for Depth to $0$). This will give you only the curve by means of which the mesh for the tree is created.
In Geometry Nodes, this solution then essentially looks like this:
To be able to correct the distance to the trunk later, first capture the radius with
The index is also important in this case, because I use this spline index to filter out the main trunk (you want to instantiate your leaves only at the branches).
After that I use
Curve to Points and get the individual points of the curves, as well as their rotation. You can also use
Resample Curve to create multiple points.
The rotation of the points serves me for the alignment of the leaves. In this example, I randomly switch between two rotations so that the leaves appear either on the left or right side of the branches.
After instantiation, I use the previously captured radius as the offset for the instances in local space.
A more detailed example might look like this:
Here I additionally control the rotation and scaling of the leaves depending on their Z-position and their position along the branches. For this purpose, I use the spline parameter Factor captured before.
There are a lot of other possibilities to influence the rotations and to give the tree more life. For example, you could additionally influence the rotations with a random value or something similar.