Are there halachot of how to make charoset, or is the (approximate) final product the important thing? Answer:
There are prominent sources mentioning certain ingredients and procedures for making charoset, but before analyzing their role, let us start with background.
347 - The Logic Behind the Unusual Fast of the Firstborn
348 - The Way to Make Charoset
349 - When to Make a Beracha for Inheritance
There are two opinions in the mishna (Pesachim 114a) if charoset is a mitzva. If it is not, we have it due to fear of kappa. Rashi says that kappa is a venom-like substance in sharp vegetables, which is neutralized by the special taste or, perhaps, smell of charoset (see Pesachim 115b). Rabbeinu Chananel says that it is a potentially dangerous worm that grows on the maror/chazeret; charoset kills it.
If charoset is a mitzva, it is a remembrance, either of the tapuach tree (unclear if it is an apple or what type of apple) or of mortar, each having historical significance regarding Bnei Yisrael’s stay in Egypt (ibid. 116a). Both may be true, as Abaye says that charoset should have both kiyuha (sharpness? acidity?) because of the tapuach and thickness because of the mortar. The Yerushalmi (Pesachim 10:3) says that some require it to be thick to remember mortar and some require it to be loose to remember blood. The Tur (Orach Chayim 473) cites Rabbeinu Yechiel as saying that we actually fulfill both, by starting it thick and then adding vinegar to make it looser.
Adding vinegar addresses another two issues. The gemara (ibid. 115a) says that dipping the maror into charoset is an example of dipping into a liquid, which makes netilat yadayim necessary. It also provides sharpness to address the kappa. The Rama (OC 473:5) adds red wine as a possibility to provide the above (it also has the color of blood).
Regarding base ingredients, Tosafot (Pesachim 116a, accepted by the Rama ibid.) instructs to include the fruit used in Shir Hashirim to refer to Bnei Yisrael – tapuach, figs, nuts, pomegranates, and almonds. The Rambam (Chametz U’matza 7:11) mentions dates, figs, and raisins. In addition to the spiritual elements that Tosafot mentions, these fruits seem to combine nicely to give a reasonable color and texture for our purposes.
The gemara (ibid.) says to put in tavlin (spices) to make the charoset like mortar; the Rama (ibid.) mentions cinnamon and ginger as examples. Many people today use at least one, but likely not in the way intended. Classical poskim (see Beit Yosef, OC 473 and Mishna Berura 473:50) discuss putting in long strands of tavlin, to resemble the straw used in making bricks (see Shemot 5:16), not cinnamon in powder form.
Are the instructions halacha? There are opinions among Acharonim on whether they are or just good ideas (see discussion in Mikraei Kodesh (Harari), Pesach p. 451-2). In any case, it is quite clear that there is not a need to use all of the mentioned ingredients, and it does not seem problematic to include something that is not on any list as one of several ingredients. Thus, there seems to be little difficulty to choose from among the things mentioned to use as the basis. What does seem relatively important is to add red wine (if one chooses vinegar, some say it must be grape vinegar). There are then different minhagim as to whether to put it in the liquid at the end of making the charoset or at the Seder, soon before using it. This brings us to our final point.
When the seder falls out on Shabbat, adding the wine could be a problem of lash (kneading). Therefore, the Mishna Berura (321:68) says to put in the wine before Shabbat. If he forgot to do so, one has to add the wine in a manner that is permitted. One possibility is to change the order of mixing, by putting the wine on the bottom, adding the charoset on top, and mixing them together either by finger or by shaking the utensil that holds them. The Mishna Berura points out this might be permitted only if the mixture is watery. This raises issues considering we want the charoset to be thick like mortar (see Sha’ar Hatziyun 321:86). This is another reason to avoid the issue and prepare the charoset before Shabbat.