Start by creating a sphere. Select the longitude edgeloops with edge ring [g] and then edge loop [l]. Store the selection, we will later use it to model the stings.
To carve out the typical cactus ripples extrude the selected edges in the normal direction. This brings an unwanted side effect.
Select one of the unwanted vertices and use select similar [i] and hit [del] or [bksp] to get rid of them.
You can easily reshape the cactus by scaling and moving latitude edge loops. If you need more edge loops use edge extrude without moving. It creates two new edge loops.
Now we want to chop our cactus at the bottom. Delete the south pole vertices. Select the resulting face and switch to vertex mode. Use tighten to get all the vertices into a nice circle
This is the clue to create the stings: recall the previously saved selection update it with [l] and switch to vertex mode.
Now all vertices where we want stings are selected.
Use bevel to replace the vertices with small faces which we want to extrude later to model the stings. Don't forget to deselect the north pole vertices (bevel works better then).
You could extrude this faces now but most cactuses have multiple stings in one place.
Next step is quite a hack: We want to split our faces and change the normals of the sub faces. We achieve this with smooth [s] command. Extrude the faces in normal direction. To sharpen our cactus' stings scale the selected faces uniformly down to zero. Don't forget, that they are still selected even if you can't see them.
Next goal is to subdivide the cactus' body without destroying the nice little stings.
Switch to edge mode, select more [+] then select adjacent edges to select the small edges at the bottom of every single sting (marked green in the image) too
Define these edges as 'hard edges': hardness->hard.
Select the whole object and smooth it. You'll see that the stings remain while the body converges to its subdivision limit surface
Wings 3d is definitely not the best editor for high poly count meshes. After the sting extrusion it is hard at the edge of usability. This is because the wings internal data representation called "the winged edge data structure" stores not only vertices, edges and faces but also a big set of pointers to all adjacent geometry.
The picture below is my cactus after one step of subdivision and it needs 16Mb of memory. Saved as *.wings file it needs only about one meg. In my opinion Wings3D is definitely the best low poly subdivision modeler in the world, and at the same time open source. Wings3D is artist tool that is user friendly and easy to learn.
The cactus with just one sting in one place.