Faits :
A.
Par jugement du 22 mars 2019, le Tribunal criminel du Littoral et du Val-de-Travers a reconnu A._ coupable d'assassinats et l'a condamné à une peine privative de liberté de vingt ans, sous déduction de la détention déjà subie. Ce jugement règle, en outre, la question des frais judiciaires, celle des prétentions des parties plaignantes, le sort d'objets séquestrés ainsi que les indemnités des conseils d'office.
B.
Par jugement du 17 juin 2020 la Cour pénale du Tribunal cantonal neuchâtelois a rejeté l'appel formé par A._ et admis l'appel joint du Ministère public. Elle a réformé le jugement entrepris en ce sens que A._ était condamné à une peine privative de liberté à vie et l'a confirmé pour le surplus. En résumé, ce jugement sur appel, auquel on renvoie pour le surplus, repose sur l'état de fait pertinent suivant.
B.a. Peu après son divorce, en 1997 ou 1998, A._, né en 1963, a fait la connaissance de B._, née en 1970, qui travaillait comme sommelière dans un restaurant qu'il fréquentait. Ils ont assez rapidement vécu ensemble. A la suite de problèmes de santé, A._ a vendu le garage qu'il exploitait en 2001. Depuis lors, il n'a plus eu d'activité professionnelle régulière et a été mis au bénéfice d'une rente AI à 100%. Les concubins ont eu deux enfants, D._, né en 2006, et C._, née en 2008. En 2012, la famille a déménagé à U._ et A._ s'est notamment inscrit à la société de tir, activité qu'il pratiquait déjà depuis plusieurs années. Au début de l'année 2014, le couple s'est séparé et chacun a pris son propre logement, les deux restant toutefois à U._. Cette séparation, décidée par A._, était essentiellement motivée par une mésentente, sur fond de problèmes d'alcool qui entraînaient de fréquentes disputes. Tout en suivant certaines règles fixées d'un commun accord quant à la garde des enfants, les ex-concubins se montraient très souples dans leur application concrète. B._, qui ne travaillait plus depuis un certain temps, vivait de la contribution mensuelle que lui versait son ex-compagnon ainsi que de l'aide sociale. A._ vivait donc seul et B._ habitait avec leurs deux enfants, mais les ex-compagnons continuaient à se voir régulièrement, en particulier pour les repas de midi, en semaine, que A._ venait régulièrement prendre au domicile de son ex-compagne. Ils se rendaient également des services et entretenaient des relations intimes occasionnelles. Depuis un certain temps déjà, B._ n'était pas contente des fréquents passages de son ex-compagnon à son domicile et s'en plaignait auprès de connaissances. Les disputes étaient fréquentes, sans doute liées à l'alcoolisme des deux intéressés, et une reprise de la vie commune n'était pas à l'ordre du jour. A._ semblait toutefois avoir encore des sentiments pour son ex-compagne.
B._ et E._, qui habitait aussi à U._, se sont rapprochés au printemps 2017. Jusqu'au 3 août 2017, la situation n'était pas extrêmement claire pour A._. Il pensait, depuis la fin du mois de juillet environ, que son ex-compagne avait une relation avec un tiers, mais ne savait pas de qui il pouvait s'agir.
B.b. Dans la journée du 3 août 2017, B._ et E._ sont allés ensemble prendre un verre au bar de la station-service de U._. Les enfants D._ et C._ étaient avec eux. Quand B._ est sortie de la station-service avec les enfants, vers 19h30, A._ est arrivé en voiture et a exigé que les enfants viennent avec lui. Une altercation entre B._ et A._ s'en est suivie. E._ est également sorti de l'établissement, mais ne s'est pas mêlé à la dispute. A._ a pris les enfants avec lui en disant à leur mère qu'il ferait le nécessaire pour se faire attribuer la garde des enfants et qu'elle ne les reverrait plus. B._ a appelé la police et dit que son ex-compagnon avait enlevé ses enfants, celle-ci lui répondant qu'il s'agissait d'une affaire civile et qu'elle n'interviendrait pas. Au cours de la soirée, B._ et A._ se sont échangé des messages, par lesquels la prénommée réclamait le retour de ses enfants, menaçant de porter plainte. A._ s'est ensuite rendu seul chez son ex-compagne. Il y a trouvé B._ et E._. A._ s'est rapidement emporté et a frappé E._ à coups de poing, qui l'a repoussé. Finalement, les choses se sont calmées et tous les trois ont bu un verre ensemble. C'est lors de cette soirée que A._ a eu la confirmation de ses soupçons quant à une relation de son ex-compagne avec un tiers, a su qui était ce tiers et a compris que sa relation avec B._, ou ce qu'il en restait, était terminée.
B.c. Dans la journée du 4 août, A._ a ramené les enfants chez B._, à qui il a brièvement parlé, puis a téléphoné à plusieurs personnes, dont sa mère et celle de B._, pour leur annoncer que sa relation avec cette dernière était terminée. Il a encore échangé des messages avec B._, à qui il disait notamment de le laisser tranquille car elle lui avait fait assez de mal. En fin d'après-midi, il s'est rendu chez un voisin, avec qui il a bu l'apéritif. Il a évoqué le fait que son ex-compagne avait un nouvel ami et s'est exprimé de manière virulente à ce sujet, indiquant notamment regretter de ne pas avoir réussi à l'assommer la veille au soir. En début de soirée, A._ a encore eu plusieurs conversations téléphoniques (avec sa mère, son voisin, l'amie de celui-ci, son ami G._).
Dans la soirée, E._ et B._ sont allés ensemble au restaurant, avec C._, tandis que D._ s'est rendu chez un ami pour y passer la nuit. A._ a appelé son ex-compagne à 19h38. Il ne lui a pas parlé, mais a seulement demandé de lui passer sa fille, qui lui a dit qu'elle se trouvait au restaurant avec sa mère et son nouveau copain. A._ a encore appelé à plusieurs reprises B._, puis celle-ci a cessé de répondre à ses appels et A._ lui a envoyé des messages, menaçant notamment de " démolir " E._. Ce dernier et B._ ont quitté le restaurant et sont arrivés au domicile de B._ avec C._ peu avant 23h30.
B.d. A._ a bu passablement de vin durant la soirée. A teneur des images de vidéosurveillance, il a garé sa voiture devant l'agence de la Banque F._ (F._), à proximité du domicile de B._, à 21h54. Il a marché en direction de la maison de son ex-compagne en portant un sac blanc dans lequel le pistolet a ensuite été retrouvé sur les lieux du crime. Le véhicule n'a plus bougé par la suite. A._ s'est caché dans la chambre parentale de son ex-compagne pour y attendre le retour des futures victimes. Il n'est pas exclu qu'il ait fait un bref passage chez lui dans l'intervalle. A leur arrivée, B._ et E._ se sont rendus à la cuisine et se sont versés à boire. C._ est allée dans sa chambre pour mettre son pyjama. Elle y a pris son duvet, pour aller dormir dans la chambre de sa mère. Elle est repartie en direction de la cuisine. A._ est sorti de la chambre parentale et a suivi sa fille. Il a fait tomber un bricolage et l'a ramassé. Le bruit a attiré l'attention de C._, qui s'est retournée et a demandé à son père ce qu'il faisait là. Elle a vu qu'il tenait un pistolet à la main et lui a dit: " fais pas ça ". A._ lui a fait signe de faire silence en mettant un doigt devant sa bouche. Lorsqu'il est arrivé dans la cuisine, B._ et E._ étaient assis sur des chaises, vers la table. A._ n'a rien dit, a fait un mouvement de charge, a pointé son arme sur E._, à environ 20 à 30 cm de lui, et lui a tiré dessus, l'atteignant à la tête. B._ lui a dit " t'es fou " et C._ " non, papa ". Après avoir fait un pas de côté pour se mettre en face de son ex-compagne, et toujours sans un mot, A._ a alors tiré sur elle, l'atteignant également à la tête, à 20 ou 30 cm de distance.
B.e. Après ce deuxième coup de feu, A._, voyant que sa fille était près de lui vers l'entrée de la cuisine, lui a dit " un peu en rigolant ", que ça faisait du bruit. Il lui a demandé d'aller dans la chambre de sa mère. Il a constaté que B._ était encore en vie et lui a tiré une nouvelle balle à bout portant, dans la tempe. C._, qui était dans la chambre parentale, a entendu le troisième coup de feu. Elle a dit à son père " arrête " et est revenue en direction de la cuisine. Son père l'a interceptée et l'a emmenée dans la chambre en lui disant de préparer ses affaires. Ils ont discuté un moment dans cette pièce. A._ a téléphoné à sa mère vers minuit en lui expliquant qu'il avait abattu B._ et son nouveau copain, que " la petite " avait " assisté à la chose " et qu'il fallait venir la chercher. La mère de A._ a demandé à son beau-fils, H._, d'aller chercher C._. En l'attendant, A._ a mis le pistolet, le projectile tiré, la douille et une cartouche non tirée dans le sac et a bu du vin. Vers 1h du matin, H._ est venu prendre C._. A._ a alors appelé la police, expliquant qu'il venait d'abattre son ex-amie et le copain de celle-ci. A l'arrivée de la police, il s'est rendu sans résistance.
C.
A._ forme un recours en matière pénale au Tribunal fédéral. Il conclut principalement, avec suite de frais et dépens, à ce qu'il soit reconnu coupable de meurtres au sens de l'<ref-law>, subsidiairement de meurtre au sens de l'<ref-law> et d'assassinat au sens de l'<ref-law>, et à ce qu'il soit condamné à une peine privative de liberté n'excédant pas 15 ans. Il conclut également à ce qu'il soit dit que les indemnités de conseil d'office dues à Me Isabelle Nativo et Me Sabrina Burgat ne sont pas remboursables et que l'indemnité au sens de l'<ref-law> pour la procédure d'appel soit refusée à K._ et L._. A titre subsidiaire, il conclut au renvoi de la cause au Tribunal cantonal pour nouveau jugement. Il sollicite par ailleurs le bénéfice de l'assistance judiciaire.

Considérant en droit :
1.
Le recourant se plaint d'arbitraire dans l'établissement des faits et de la violation du principe de présomption d'innocence. Un état de fait dénué d'arbitraire aurait dû conduire la cour cantonale à qualifier les infractions de meurtres et non d'assassinats.
1.1. Le Tribunal fédéral n'est pas une autorité d'appel, auprès de laquelle les faits pourraient être rediscutés librement. Il est lié par les constatations de fait de la décision entreprise (<ref-law>), à moins qu'elles n'aient été établies en violation du droit ou de manière manifestement inexacte au sens des art. 97 al. 1 et 105 al. 2 LTF, à savoir, pour l'essentiel, de façon arbitraire au sens de l'art. 9 Cst. Une décision n'est pas arbitraire du seul fait qu'elle apparaît discutable ou même critiquable; il faut qu'elle soit manifestement insoutenable et cela non seulement dans sa motivation mais aussi dans son résultat (<ref-ruling> consid. 1.1 p. 155 s.; <ref-ruling> consid. 1.1 p. 503; sur la notion d'arbitraire v. <ref-ruling> consid. 2.3.1 p. 244). Le Tribunal fédéral n'entre en matière sur les moyens fondés sur la violation de droits fondamentaux, dont l'interdiction de l'arbitraire, que s'ils ont été invoqués et motivés de manière précise (<ref-law>; ATF <ref-ruling> consid. 1.1 p. 503). Les critiques de nature appellatoire sont irrecevables (<ref-ruling> consid. 1.1 p. 156). Lorsque l'appréciation des preuves et la constatation des faits sont critiquées en référence à la présomption d'innocence (art. 6 par. 2 CEDH, 32 al. 1 Cst. et 10 CPP), le principe in dubio pro reo n'a pas de portée plus large que l'interdiction de l'arbitraire (<ref-ruling> consid. 1.1 p. 156; <ref-ruling> consid. 1.1 p. 503).
Lorsque l'autorité cantonale a forgé sa conviction quant aux faits sur la base d'un ensemble d'éléments ou d'indices convergents, il ne suffit pas que l'un ou l'autre de ceux-ci ou même chacun d'eux pris isolément soit à lui seul insuffisant. L'appréciation des preuves doit en effet être examinée dans son ensemble. Il n'y a ainsi pas d'arbitraire si l'état de fait retenu pouvait être déduit de manière soutenable du rapprochement de divers éléments ou indices. De même, il n'y a pas d'arbitraire du seul fait qu'un ou plusieurs arguments corroboratifs apparaissent fragiles, si la solution retenue peut être justifiée de façon soutenable par un ou plusieurs arguments de nature à emporter la conviction (arrêts 6B_238/2020 du 14 décembre 2020 consid. 1.1; 6B_621/2020 du 9 décembre 2020 consid. 1.1; 6B_772/2020 du 8 décembre 2020 consid. 1.1).
1.2. Le recourant soutient que le constat de la cour cantonale selon lequel " sa décision ferme [de tuer] a été prise au plus tard suite à l'appel téléphonique de 19h38, mais l'idée d'un acte funeste avait sans aucun doute germé plus tôt déjà dans son esprit " (jugement attaqué, consid. M.d, p. 48) ne reposait sur aucun élément du dossier et ne s'expliquait même pas au regard des faits retenus dans la décision attaquée. Selon ceux-ci, il s'était rendu chez B._ vers 21h50, lorsqu'il avait parqué sa voiture sur le parking de la Banque F._. Or, il était possible qu'il soit retourné chez lui un moment avant de repartir chez B._ vers 23h40, soit 5 à 10 minutes avant les faits. Le recourant soutient dès lors que l'idée de tuer avait commencé à germer au plus tôt au fil de la soirée et de sa consommation d'alcool, mais la décision ferme de passer à l'acte n'avait pas été prise avant qu'il ne parte (une seconde fois) de chez lui avec un pistolet à 23h40.
1.2.1. Fondé sur sa propre appréciation des preuves, l'exposé du recourant s'écarte, sur nombre de points, de l'état de fait ressortant de la décision entreprise, sans que le recourant ne démontre, pour chaque élément de fait, le caractère arbitraire du jugement cantonal. Le recourant procède ainsi de manière appellatoire. Son grief est examiné ci-après dans la mesure où il n'apparaît pas d'emblée irrecevable pour ce motif.
1.2.2. Le recourant ne conteste pas les constatations de la cour cantonale à teneur desquelles il a initialement déclaré que c'était à la suite du téléphone de 19h38 qu'il avait décidé de tuer son ex-compagne et s'était ensuite rendu chez celle-ci à cet effet. Plus tard, il a affirmé que l'idée de tuer avait germé tout au long de la soirée. Au médecin-légiste qui l'a examiné après les faits, il a déclaré qu'au téléphone, sa fille lui avait appris que son ex-compagne était de sortie avec un homme récemment connu et qu'il ne connaissait pas; il " pète un plomb " et " lorsque le couple rentre, avant minuit, il tire d'emblée, sans discussion, sans altercation. " Dans une version ultérieure, il a soutenu qu'il n'avait absolument pas d'idée en tête quand il est parti de chez lui; il avait certes pris une arme, mais ne savait pas ce qu'il allait faire en arrivant chez son ex-compagne. Devant la cour cantonale, interrogé sur la question de savoir quand il avait décidé de tuer B._ et E._, le recourant a répondu qu'il n'en avait aucune idée.
1.2.3. Le lien que la cour cantonale établit entre la conversation téléphonique de 19h38 et la décision de tuer les victimes trouve ainsi ancrage dans le récit initial du recourant. Ses déclarations ultérieures sont floues et sans constance (il a pris une arme, mais sans savoir ce qu'il allait en faire; il ne se souvient plus). La cour cantonale a d'ailleurs constaté que les versions données par le recourant étaient souvent évolutives, voire contradictoires, de même qu'elles révélaient une certaine tendance à aménager les déclarations aux circonstances et à la connaissance qu'il avait du dossier, même si, sur certains points, il était possible que le recourant n'ait pas de souvenir des faits, ou en tout cas pas de souvenirs précis. Compte tenu des faits établis et non contestés, notamment en ce qui concerne les événements des jours et heures qui ont précédé, il n'est pas dénué de sens que ce soit la découverte de ce dîner entre sa fille, son ex-compagne et le nouvel ami de celle-ci qui ait servi d'élément déclencheur dans l'esprit du recourant. La cour cantonale n'a ainsi pas fait preuve d'arbitraire en se fondant sur les premières déclarations du recourant.
1.2.4. Pour le reste, il est vrai que l'on ne trouve pas d'éléments déterminants, dans l'état de fait cantonal, permettant de retenir que le recourant aurait déjà envisagé d'attenter à la vie de B._ et de E._ dans le cours de l'après-midi, même s'il avait précédemment manifesté passablement d'agressivité à leur égard (il avait frappé E._, s'était exprimé de manière virulente à son égard et avait également copieusement insulté B._). La formulation de la cour cantonale selon laquelle " sa décision ferme a été prise au plus tard suite à l'appel téléphonique de 19h38, mais l'idée d'un acte funeste avait sans aucun doute germé plus tôt dans son esprit " peut dès lors paraître discutable sous cet angle. Cela étant, dans l'appréciation de la qualification des infractions, la cour cantonale a simplement retenu que " le prévenu a décidé de tuer, vers 19h40 au plus tard. Il a ensuite, dans un laps de temps d'environ deux heures, préparé son acte, en se munissant d'un pistolet, dans lequel il a inséré un magasin contenant huit ou neuf cartouches, puis a effectué un mouvement de charge " (jugement attaqué, consid. 7 f., p. 76). Ainsi, pour conclure à un certain degré de préméditation, élément pertinent dans la qualification juridique des infractions, la cour cantonale s'est fondée sur une volonté de tuer qui s'est formée à partir du téléphone de 19h38 et sur les préparatifs qui s'en sont suivis. La correction de l'état de fait cantonal sous cet angle serait donc, quoi qu'il en soit, sans incidence sur l'issue de la cause (cf. <ref-law>).
Aussi, compte tenu de ce qui précède, le recourant n'a pas démontré le caractère arbitraire de l'établissement des faits cantonal.
1.3. Le recourant fait grief à la cour cantonale d'avoir retenu qu'il s'était rendu chez son ex-compagne un peu avant 22h, alors qu'elle n'était pas encore rentrée, et d'avoir attendu son retour et celui de E._ en se cachant dans la chambre parentale avec son arme. Il soutient que, lorsqu'il s'est garé devant la Banque F._ à 21h54, il n'est pas établi qu'il disposait alors de son arme. Dans le sac qu'il transportait, il pouvait très bien y avoir uniquement un cubi de rosé, qui a ensuite été retrouvé dans ledit sac avec l'arme. D'ailleurs, il a été retenu que la veille au soir, B._, E._ et le recourant avaient bu un verre ensemble après l'altercation. Le fait qu'il ait déclaré avoir quitté le domicile avec l'arme (jugement attaqué, consid. M.o, p. 52) ne signifiait pas que c'était forcément à 21h50, lorsqu'il était parti en voiture. Cela pouvait très bien être la seconde fois, lorsqu'il avait quitté son domicile à pied, étant rappelé que " la Cour pénale n'exclut pas que le prévenu ait pu faire un bref passage chez lui ", cela au regard du témoignage de sa voisine qui dit l'avoir vu vers 23h40 (cf. consid. 1.3.5 infra). Il était improbable que le recourant ait laissé son arme quelque part sans surveillance dehors lorsqu'il a fait ce passage chez lui, sachant qu'il n'avait pas de sac lors de son second voyage. A suivre le raisonnement cantonal, le recourant serait venu avec son pistolet, se serait caché sous le lit, serait reparti chez lui pour faire on ne sait quoi, mais en tout cas pas prendre son pistolet puisqu'il l'aurait nécessairement laissé chez B._, puis serait retourné dans sa cachette. Cette version des faits n'était pas tenable. Il fallait donc retenir qu'il avait trouvé porte close chez B._ vers 21h50 et n'avait probablement pas la clé. Il était donc retourné chez lui. Jusque-à, il n'était pas certain qu'il ait eu son arme car il était peu vraisemblable qu'il aurait laissé l'arme seule près de chez B._. Vers 23h40, heure à laquelle la voisine l'avait vu sortir de chez lui, il était reparti à pied en direction de la maison avec son arme. Il était donc arrivé sur place après B._ et E._, qui étaient rentrés à la maison à 23h30. En conséquence, il n'avait pas attendu dans la chambre le retour de ses futures victimes.
1.3.1. Le recourant oppose sa version des faits en lien avec son déplacement au domicile de B._ à celle de la cour cantonale. Son argumentation est émaillée d'hypothèses de nature appellatoire. Il en va ainsi, par exemple, lorsqu'il soutient que le sac qu'on le voit transporter sur les images de vidéosurveillance pouvait simplement contenir un cubi de rosé plutôt qu'une arme, alors qu'à teneur des faits constatés, il n'a jamais déclaré qu'il se serait rendu chez son ex-compagne avec du vin.
Au demeurant, il peut être relevé ce qui suit.
1.3.2. Initialement, le recourant a indiqué être parti chez B._ en voiture une heure environ après le téléphone de 19h38. En outre, il a déclaré être parti avec son arme. Ce n'est que lorsqu'il a été confronté au fait qu'il a garé sa voiture à 21h54 et que les victimes sont arrivées vers 23h30 qu'il a supposé être rentré chez lui dans l'intervalle, puis qu'il a soutenu, en plaidoirie, qu'il n'aurait pris son arme que lors de son second voyage; il a toutefois expliqué n'avoir aucun souvenir de s'être déplacé à deux reprises. Or, pour établir le déroulement des événements, la cour cantonale s'est appuyée sur de nombreux éléments. Elle s'est tout d'abord fondée sur les déclarations de C._, qui a expliqué que son père lui avait dit qu'il s'était caché sous le lit. La cour cantonale a retenu que la crédibilité de la fille du recourant, âgée de neuf ans au moment des faits, ne faisait pas de doute, ce que le recourant ne remet pas en question. En outre, ce récit est corroboré par l'aspirant de police M._, qui surveillait le recourant après son interpellation; sans qu'on ne lui pose de questions, le recourant avait déclaré: " je les ai attendus dans mon ancien lit, puis quand il sont entrés, je suis allé à la cuisine et leur ai tiré dessus " (jugement attaqué, consid. M., p. 48 à 53). C'est ainsi que deux personnes sans aucun lien entre elles ont indiqué que, juste après les faits - et avant que le recourant déclare ne plus se souvenir de ce qu'il avait fait -, l'intéressé leur avait dit qu'il avait attendu les victimes dans la chambre parentale avant de les abattre. Le recourant se limite à alléguer qu'il a dit n'importe quoi après les faits en citant deux exemples, soit qu'il a déclaré qu'il avait tiré deux balles à chacune de ses victimes, alors qu'il n'en a tiré qu'une seule pour tuer E._, et que son chien était un berger allemand alors que c'était un labrador. De telles inexactitudes ne sont pas comparables avec l'invention complète d'une histoire de cachette dans la chambre et ne démontrent ainsi aucunement l'arbitraire des constatations cantonales.
1.3.3. Le recourant soutient qu'il n'avait pas la possibilité d'entrer dans le logement de B._ en son absence car il n'avait pas la clé. S'il l'avait eue, ce qu'il avait toujours nié, elle aurait été retrouvée et le dossier en ferait état. C._ était revenue sur ses déclarations lors de sa deuxième audition et dit que son père possédait une clé de l'appartement, mais cette audition avait eu lieu plus de quatre mois après les faits. Il était dès lors douteux que le recourant ait pu pénétrer dans la maison vers 21h50, et au contraire hautement vraisemblable qu'il ait dû repartir chez lui.
Lorsqu'elle a déclaré que son père avait encore une clé du domicile, C._ a également expliqué que son père lui confiait parfois la clé de l'appartement de sa maman pour qu'elle puisse rentrer toute seule chez elle après l'école. La clé en question était munie d'un rond rouge et était attachée à un scoubidou, sauf erreur de couleur verte (rapport d'audition de C._ du 21 décembre 2017, pièce 424). De manière générale, la cour cantonale a jugé que les déclarations de C._ étaient crédibles. Celles-ci en particulier contiennent des détails qui permettent de les ancrer dans le réel. En outre, l'autorité précédente a constaté qu'elles étaient corroborées par un témoin qui a déclaré que B._ lui avait dit, l'après-midi du même jour, que le recourant avait encore les clés de chez elle, à cause des enfants (jugement attaqué, consid. J. s., p. 42). Compte tenu de ces éléments, il n'était pas insoutenable de retenir que le recourant avait la possibilité d'entrer dans l'appartement en l'absence de B._.
1.3.4. Le recourant fait grief à la cour cantonale de s'être fondée sur la présence de traces des semelles de ses chaussures dans la chambre parentale. Selon lui, cet élément n'est pas probant, car il a été admis qu'il s'était rendu dans la chambre après les crimes pour discuter avec sa fille, ce qui pouvait également expliquer lesdites traces.
Il ne s'agit certes pas d'un indice qui, s'il était pris isolément, serait à lui seul suffisant. La cour cantonale pouvait toutefois en tenir compte dans son appréciation d'ensemble. A cela s'ajoute encore, selon des constatations qui ne sont pas discutées (<ref-law>), que lorsque le recourant s'était dirigé vers la cuisine pour aller tuer les deux victimes, il s'était trouvé derrière sa fille C._, qui venait depuis sa chambre ou la chambre parentale et marchait, elle aussi, vers la cuisine; la disposition des lieux faisait qu'il n'aurait pas pu se trouver derrière elle s'il était allé directement à la cuisine depuis la porte d'entrée.
1.3.5. En résumé, l'état de fait retenu par la cour cantonale, à teneur duquel le recourant a attendu le retour de ses victimes en se cachant dans la chambre parentale, repose sur les témoignages de C._ et de l'aspirant de police M._. Il permet d'expliquer ce qui s'est passé entre le moment où le recourant a parqué sa voiture à proximité du domicile de son ex-compagne à 21h54 et celui des homicides après 23h30. Les traces de semelles trouvées dans la chambre parentale entre la fenêtre et le lit et la disposition de l'appartement en lien avec les récits de C._ et du recourant sur le moment du passage à l'acte viennent également corroborer ce déroulement des événements. Il est vrai, en revanche, qu'il s'accorde a priori mal du témoignage de la voisine du recourant qui a déclaré l'avoir vu partir de chez lui vers 23h40. Compte tenu des images de vidéosurveillance qui établissent l'arrivée du recourant aux abords du domicile de B._ vers 21h50, la cour cantonale a retenu que soit la voisine avait pu se tromper sur l'heure, soit le recourant avait fait un bref passage chez lui, entre le moment où il s'était rendu chez B._ après le parcage de sa voiture devant la Banque F._ et celui où il attendait dans la chambre parentale. Sur ce point, le recourant objecte que la voisine ne l'a pas vu porter un sac qui aurait contenu l'arme et que l'hypothèse retenue par la cour cantonale, selon laquelle il avait laissé son pistolet quelque part aux abords du domicile de B._, était improbable. L'argument du recourant n'est toutefois pas pertinent: en effet, lui-même prétend avoir pris son pistolet vers 23h40, lorsque la voisine l'a aperçu; cela n'exclut aucunement qu'il n'aurait pas déjà eu son arme avec lui lors de son déplacement de 21h50 (soit il l'a gardée avec lui pendant ses déplacements, soit il l'a cachée aux abords du domicile de la victime, soit encore, il est toujours resté chez B._ et la voisine s'est simplement trompée dans l'heure).
1.3.6. Selon ce qui précède, aucun moyen de preuve, mis en exergue par le recourant, ne vient faire obstacle à la constatation de la cour cantonale selon laquelle le recourant a attendu ses futures victimes dans la chambre parentale. Cet état de fait repose sur une mise en perspective des différents éléments du dossier et ne saurait, dès lors, être qualifié d'insoutenable. Partant, la cour cantonale pouvait retenir que, si le recourant n'avait pas planifié de longue date les actes qu'il a commis, il a tout de même préparé ses crimes dans un processus qui a pris plusieurs heures, puisqu'il a décidé de tuer B._ et E._ après avoir parlé au téléphone avec sa fille à 19h38 (cf. consid. 1.2 supra), a ensuite préparé son arme et quitté son domicile vers 21h50, puis a attendu les victimes en se cachant dans la chambre parentale avant de les exécuter à leur retour, soit aux alentours de 23h40.
1.4. Le recourant reproche encore à la cour cantonale d'avoir constaté que le soir précédent les faits, il avait dit à E._: " si tu me donnes 5'000 francs, tu peux tout garder (garder son " ex ", les meubles et tout ce qui va avec, N._, D.168) " et de s'être fondée sur ces déclarations pour retenir qu'il avait commis un " crime de propriétaire ". Il affirme que le procès-verbal d'interrogatoire de N._ auquel il était fait référence ne parlait pas de la question de ces 5'000 francs.
Contrairement à ce qu'allègue le recourant, il ressort du procès-verbal d'audition cité par la cour cantonale que N._ a rapporté que le recourant avait dit: " tu as cas me donner CHF 5'000.- et garder mon ex et les meubles et tout ce qu'il va avec [sic]" (procès-verbal d'audition du 18 août 2017, l. 209-210, pièce 169). Partant, le recourant ne démontre pas en quoi la constatation cantonale serait arbitraire.
1.5. Sur le vu de ce qui précède, le grief d'arbitraire dans l'établissement des faits est rejeté, dans la mesure où il est recevable.
2.
Le recourant conteste la qualification d'assassinat.
2.1. L'assassinat (<ref-law>) est une forme qualifiée d'homicide intentionnel qui se distingue du meurtre ordinaire (<ref-law>) par le fait que l'auteur a tué avec une absence particulière de scrupules. Cela suppose une faute spécialement lourde et déduite exclusivement de la commission de l'acte; les antécédents ou le comportement que l'auteur adopte immédiatement après les faits n'entrent en ligne de compte que dans la mesure où ils y sont étroitement liés, et permettent de caractériser la personnalité de l'auteur (<ref-ruling> consid. 4.1 p. 64). Pour caractériser la faute de l'assassin, l'<ref-law> évoque les cas où les mobiles, le but ou la façon d'agir de l'auteur sont particulièrement odieux. Le mobile est notamment particulièrement odieux lorsqu'il apparaît futile, l'auteur tuant pour se venger, sans motif sérieux, ou encore pour une broutille. La façon d'agir est particulièrement odieuse lorsqu'elle est barbare ou atroce ou lorsque l'auteur a exploité avec perfidie la confiance de la victime. L'énumération du texte légal n'est pas exhaustive. L'absence particulière de scrupules peut être admise lorsque d'autres éléments confèrent à l'acte une gravité spécifique. C'est ainsi que la réflexion et la planification de l'acte peuvent constituer des éléments susceptibles de conduire à retenir une absence particulière de scrupules. Par la froideur dans l'exécution et la maîtrise de soi, l'auteur manifeste également le plus complet mépris de la vie d'autrui (<ref-ruling> consid. 4.1 p. 64 s.). Pour déterminer si l'on se trouve en présence d'un assassinat, il faut procéder à une appréciation d'ensemble des circonstances externes (comportement, manière d'agir de l'auteur) et internes de l'acte (mobile, but, etc.). Il y a assassinat lorsqu'il résulte de l'ensemble de ces circonstances que l'auteur a fait preuve du mépris le plus complet pour la vie d'autrui. Alors que le meurtrier agit pour des motifs plus ou moins compréhensibles, généralement dans une grave situation conflictuelle, l'assassin est une personne qui agit de sang-froid, sans scrupules, qui démontre un égoïsme primaire et odieux et qui, dans le but de poursuivre ses propres intérêts, ne tient aucun compte de la vie d'autrui. Chez l'assassin, l'égoïsme l'emporte en général sur toute autre considération. Il est souvent prêt, pour satisfaire des besoins égoïstes, à sacrifier un être humain dont il n'a pas eu à souffrir. La destruction de la vie d'autrui est toujours d'une gravité extrême. Pour retenir la qualification d'assassinat, il faut cependant que la faute de l'auteur, son caractère odieux, se distingue nettement de celle d'un meurtrier au sens de l'<ref-law> (<ref-ruling> consid. 4.1 p. 65).
2.2. La cour cantonale a retenu que le recourant avait décidé de tuer vers 19h40 au plus tard. Il avait ensuite, dans un laps de temps d'environ deux heures, préparé son acte en se munissant d'un pistolet, dans lequel il avait inséré un magasin contenant huit ou neuf cartouches, puis avait effectué un mouvement de charge. Quittant son domicile vers 21h50, il avait veillé à se munir d'un sac dans lequel il pouvait cacher le pistolet et à parquer sa voiture hors de la vue du domicile de son ex-compagne. Il était entré dans l'appartement de celle-ci et s'était caché dans la chambre parentale (qu'il soit brièvement retourné à son domicile ne jouait pas de rôle ici). Dans les actes décrits ci-dessus, il fallait voir une forme de préméditation, en ce sens que ce n'était pas dans une impulsion soudaine que le recourant avait tué, mais qu'il l'avait fait alors qu'il avait disposé d'un certain temps pour réfléchir, qu'il avait fait des préparatifs qui devaient permettre le passage à l'acte et qu'il avait ensuite pris les mesures nécessaires pour ne pas être repéré lorsque les futures victimes rentreraient, tout en étant prêt à tuer à ce moment-là. Quand les victimes étaient revenues, il les avait laissées s'installer à la cuisine. Il était ensuite passé à l'action avec une froideur particulière. Ni la présence de sa fille, âgée de neuf ans, ni le fait qu'elle l'ait vu tenir son pistolet à la main et lui ait dit " fais pas ça " ne l'avait dissuadé d'agir. Il s'était contenté de faire signe à sa fille de faire silence (un doigt devant la bouche) et avait poursuivi sa marche vers la cuisine. Il n'avait même pas veillé à, au moins, épargner à sa fille la vision des gestes qu'il allait commettre (sans néanmoins que la cour cantonale ne retienne une intention délibérée de tuer en présence de l'enfant). En arrivant dans la cuisine, il avait fait un mouvement de charge, s'était approché de E._ et, sans un mot, avait tiré en visant et atteignant la tête de la victime, à une très courte distance qui garantissait qu'il ne la manquerait pas. Sa détermination n'avait pas été entamée par le fait que B._ lui avait dit " t'es fou " et sa fille " non, papa " et il avait immédiatement fait feu une deuxième fois, à très faible distance aussi, en visant et atteignant la tête de son ex-compagne. Son mépris de la vie d'autrui s'était aussi manifesté par le fait que, tout de suite après avoir tiré deux fois, il avait dit à sa fille, presque en riant, " ça fait du bruit ". Quand, quelques minutes plus tard, il s'était rendu compte que B._ vivait encore, il l'avait froidement achevée d'une balle dans la tempe, tirée de très près. Ses actes apparaissaient ainsi comme une exécution froide et méthodique, opérée par un auteur qui avait démontré de la maîtrise de soi et n'avait laissé aucune chance aux victimes. Lorsqu'il avait appelé sa mère, dans les minutes qui avaient suivi, il " était calme au téléphone. Il avait une voix posée sans stress particulier. La manière dont il parlait était très claire [Avait-il bu?] Non, sa voix était normale ". Le comportement adopté ensuite par le recourant démontrait également qu'il était maître de lui. Tout d'abord, il avait pris les dispositions nécessaires pour que sa fille soit emmenée avant l'arrivée de la police. Ensuite, les propos qu'il avait tenus envers la police, environ une heure après le dernier coup de feu, trahissaient une froideur affective et un mépris de la vie d'autrui assez consternants (par exemple: il ne valait pas la peine d'envoyer une ambulance car " ils sont froids de chez froid s ", et la police devait venir sans les feux bleus: " il n'y a aucun souci. Je maîtrise totalement la situation ". Certaines déclarations du recourant lors de son premier interrogatoire - " J'ai commencé par ce monsieur, une balle. Et ensuite mon ex-amie, deux balles " - témoignaient également de cette froideur. La cour cantonale en a déduit que le recourant avait, dans sa manière d'agir, fait preuve d'une absence particulière de scrupules, caractéristique de l'assassin. Dans l'appréciation d'ensemble, la cour cantonale a aussi tenu compte du fait que, s'il n'avait certes pas fait souffrir inutilement les victimes, il avait délibérément pris le risque d'exposer sa fille de neuf ans à la vision d'un double homicide, dont l'un sur la personne de sa mère. Cette circonstance faisait également apparaître ses actes comme particulièrement odieux.
La cour cantonale a retenu que le mobile du recourant était purement égoïste. Alors qu'il avait lui-même quitté trois ans plus tôt celle qui était sa compagne et qu'il ne se gênait pas d'adopter depuis, à diverses reprises, une attitude méprisante envers elle, il n'avait pas voulu admettre qu'elle noue une nouvelle relation. La situation n'était gravement conflictuelle que par le fait du recourant lui-même, dans la mesure où les victimes n'avaient pas eu un comportement blâmable avant les crimes. Le recourant avait tué son ex-compagne et le nouvel ami de celle-ci dans ce qu'on pouvait appeler un féminicide élargi. Il avait agi par jalousie et on ne pouvait exclure une volonté de vengeance, soit celle d'éliminer ceux dont il pensait qu'ils lui causaient du tort. L'expert-psychiatre avait estimé que le recourant avait, au moins en partie, agi pour en quelque sorte sauver son honneur. On pouvait qualifier l'homicide de " crime de propriétaire ", soit celui commis par un homme qui considère que son ex-compagne lui appartient et ne doit pas avoir la liberté de choisir un destin dans lequel il n'aurait pas de place (ce que ne contredisait pas le fait que, le soir précédent, le recourant avait dit à E._: " si tu me donnes 5'000 fr., tu peux tout garder ", soit garder B._, les meubles et tout ce qui allait avec). En ce qui concernait E._, il fallait considérer que le recourant n'avait pas eu à souffrir du comportement de la victime, qui n'avait jamais été offensante et s'était au contraire montrée très mesurée dans ses réactions aux actes du recourant, faisant son possible pour ne pas engendrer un conflit. Le fait de tuer quelqu'un parce que, comme le recourant l'avait dit à l'expert-psychiatre, " il était au mauvais moment au mauvais endroit " conduisait également à retenir que le mobile était particulièrement odieux (jugement attaqué, consid. 7 f., p. 75-79).
2.3. Le recourant conteste que son mobile ou son but fût particulièrement odieux. Il fait valoir que sa relation avec B._ n'était pas dénuée de toute ambiguïté et passablement conflictuelle, notamment en raison de leurs problèmes d'alcoolisme. Il fallait aussi tenir compte du fait que le recourant et la victime vivaient de manière relativement marginale, hors du monde du travail et avec assez peu de contacts sociaux. Par ailleurs, E._ n'était pas quelqu'un qui se serait simplement trouvé en travers du chemin du recourant le soir des faits, mais le nouvel ami de son ex-compagne, désormais intrinsèquement lié à la vie de ses enfants et, par conséquent, à la sienne. De l'avis du recourant, son affaire présente des similitudes avec la cause jugée sous la référence 6B_23/2012 dans laquelle le Tribunal fédéral a confirmé la condamnation pour meurtre d'un homme qui avait tué son ex-femme en présence des enfants après avoir appris qu'elle avait un nouveau compagnon. En effet, tout comme dans cette affaire, le recourant a été en proie à une forte émotion après avoir pris conscience de la rupture sentimentale. Il s'agissait ici de prendre en compte le contexte du drame ainsi que le désarroi du recourant, excluant de retenir un mobile particulièrement odieux.
2.3.1. La cour cantonale a constaté, d'une manière qui lie le Tribunal fédéral conformément à l'<ref-law>, que le recourant avait agi par jalousie et dans une volonté de vengeance, refusant que son ex-compagne, qu'il traitait pourtant avec un certain mépris, poursuive sa vie avec un autre homme à ses côtés. Le recourant s'écarte de l'état de fait cantonal, dont il n'a pas démontré l'arbitraire, lorsqu'il affirme qu'il était dans un état émotionnel extrêmement précaire au moment d'agir. Il a certes commis les crimes après avoir appris que son ex-compagne, avec laquelle il avait conservé des liens, avait un nouveau compagnon. La cour cantonale a admis que le recourant ait pu en concevoir un certain dépit. Pour le reste, aucun élément entourant l'acte, que ce soit le comportement du recourant peu avant les faits, au moment de commettre les homicides, ou encore juste après être passé à l'acte, ne révèle une dimension émotionnelle particulièrement marquée. Contrairement à la cause 6B_23/2012 dont le recourant se prévaut, les circonstances du cas d'espèce ne relèvent ni l'existence d'un débat intérieur dénotant certains scrupules dans la phase précédant les homicides, ni le désespoir de l'auteur. Ses problèmes d'alcool et sa relative marginalisation (il ressort toutefois des faits constatés que le recourant n'était pas isolé, puisqu'il entretenait des contacts avec sa mère, sa soeur, sa fille aînée ainsi qu'avec plusieurs amis) ne rendent pas son mobile moins détestable. Partant, c'est avec raison que la cour cantonale a considéré que le recourant était animé d'un mobile égoïste lorsqu'il a tué B._.
2.3.2. Quant à E._, celui-ci n'avait causé aucun tort particulier au recourant, sinon que ce dernier voyait un rapport de rivalité. Lors de leurs deux seules rencontres, la victime s'était montrée pacifique et conciliatrice. Le recourant avait ainsi tué quelqu'un de gênant, qu'il connaissait à peine. Selon ses propres déclarations, le recourant l'avait tué parce qu'il se trouvait " au mauvais endroit au mauvais moment ". La cour cantonale pouvait dès lors conclure que le mobile qui a guidé le recourant à occire E._ était particulièrement odieux.
2.4. Le recourant discute ensuite le caractère particulièrement odieux de sa façon d'agir. Il souligne qu'il n'a pas fait preuve de sauvagerie ou de sadisme dans la manière dont il a exécuté ses victimes. Par ailleurs, dans la mesure où il a été retenu une volonté homicide, le fait que le recourant n'ait pas tenté de sauver la vie de B._ après le premier coup de feu ne constitue pas une circonstance caractéristique de l'assassinat, puisque cela reviendrait à retenir à charge l'absence d'une circonstance atténuante (celle du repentir actif au sens de l'<ref-law>). Il fallait également tenir compte du fait qu'il avait lui-même appelé la police après les faits.
Si elle n'était certes pas empreinte de cruauté, l'exécution méthodique à laquelle le recourant a procédé, dénuée de toute manifestation d'émotion, est révélatrice de son mépris de la vie d'autrui. En tirant une seconde fois sur B._ après avoir constaté que sa première balle ne l'avait pas tuée, le recourant a démontré sa grande détermination. Pour le reste, le recourant développe une argumentation irrecevable - dans la mesure où celle-ci s'écarte de l'état de fait de la cour cantonale par lequel le Tribunal fédéral est lié (cf. <ref-law>) et dont il n'a pas démontré l'arbitraire (cf. consid. 1 supra) - en tant qu'il affirme que son état de choc expliquerait ses propos abrupts après les faits. Il échoue ainsi à remettre en cause les constatations cantonales relatives au sang-froid et à la maîtrise de soi qui ont caractérisé son comportement. Le fait que le recourant ait appelé lui-même la police et se soit rendu sans heurt n'exclut pas la réalisation d'infractions à l'<ref-law> qui peut découler - comme en l'espèce - d'autres circonstances.
2.5. Le recourant nie avoir agi avec préméditation. Il soutient que les événements se sont enchaînés rapidement, dans une même impulsion.
Comme la cour cantonale l'a constaté, le recourant n'a pas ourdi une machination ni préparé minutieusement son acte pendant une longue période, puisque la décision de tuer les victimes a été prise dans la soirée du 4 août 2017, après le téléphone de 19h38 (cf. consid. 1 supra). Il n'en demeure pas moins que le recourant a organisé son acte, puisqu'il a préparé son arme, qu'il la transportée dans un sac pour qu'on ne la remarque pas, a garé sa voiture hors de la vue de ses futures victimes et s'est tapi dans la chambre de B._ jusqu'à ce que celle-ci et son compagnon arrivent. La préparation du recourant avant de se rendre au domicile de sa victime et son attente en ce lieu confèrent ainsi à l'acte une gravité spécifique.
2.6. Le recourant relativise la portée de la présence de sa fille sur la qualification de sa manière d'agir.
Il est admis que le recourant n'a pas commis les crimes en tenant délibérément compte de la présence de sa fille. La comparaison que fait le recourant avec la cause 6B_23/2012 s'arrête toutefois là car, dans cette affaire, les enfants étaient dans la chambre voisine et le recourant, en proie à une très forte émotion au moment du passage à l'acte, n'avait simplement pas pensé que le bruit du coup de feu les attirerait dans la pièce. Ils n'avaient donc pas assisté à l'homicide. En l'espèce, le recourant a croisé le chemin de sa fille alors qu'il se rendait à la cuisine pour y exécuter ses futures victimes. Il s'est alors contenté de lui faire signe de ne pas faire de bruit et n'a même pas tenté de la conduire dans une autre pièce pour qu'elle n'assiste pas aux crimes. La présence de sa fille ne l'a pas infléchi une seconde dans son intention homicide et il ne pouvait qu'être conscient que celle-ci assisterait donc sûrement à l'homicide de sa mère et de son ami, même si cela n'était pas délibéré. Il ne s'en est tout simplement pas préoccupé et a ainsi infligé à sa fille de neuf ans une vision d'horreur et un incommensurable traumatisme. Un tel comportement dénote manifestement d'une absence particulière de scrupules. Le recourant a fait primer son propre dessein homicide sur l'intérêt de sa fille, si bien que les égards qu'il a eus pour ses enfants après la commission des crimes (emmener C._ dans la chambre pour discuter quelques minutes avec elle, appeler sa mère pour qu'elle soit prise en charge avant l'arrivée de la police, communiquer à son beau-frère le numéro de téléphone de l'endroit où se trouvait D._) ne sauraient conduire à une conclusion différente.
2.7. En conclusion, le recourant a manifesté son absence particulière de scrupules en ôtant la vie à B._ et E._ par pur égoïsme et en procédant avec une très grande froideur, allant jusqu'à prendre le risque, réalisé en l'espèce, que sa petite fille de neuf ans assiste au double homicide, dont celui de sa mère. Dans ces conditions, le jugement entrepris ne viole pas le droit fédéral en tant qu'il retient que le recourant a commis les homicides avec une absence particulière de scrupules. Compte tenu de ce qui précède, l'argument subsidiaire du recourant selon lequel seul l'homicide perpétré à l'encontre de E._ devrait être qualifié d'assassinat, tandis que celui ayant visé B._ devrait être considéré comme un meurtre, doit également être écarté.
3.
Le recourant conteste la peine privative de liberté à vie qui lui a été infligée.
3.1. Selon l'<ref-law>, le juge fixe la peine d'après la culpabilité de l'auteur. Il prend en considération les antécédents et la situation personnelle de ce dernier ainsi que l'effet de la peine sur son avenir (al. 1). La culpabilité est déterminée par la gravité de la lésion ou de la mise en danger du bien juridique concerné, par le caractère répréhensible de l'acte, par les motivations et les buts de l'auteur et par la mesure dans laquelle celui-ci aurait pu éviter la mise en danger ou la lésion, compte tenu de sa situation personnelle et des circonstances extérieures (al. 2). La culpabilité doit être évaluée en fonction de tous les éléments objectifs pertinents, qui ont trait à l'acte lui-même, à savoir notamment la gravité de la lésion, le caractère répréhensible de l'acte et son mode d'exécution. Du point de vue subjectif, sont pris en compte l'intensité de la volonté délictuelle ainsi que les motivations et les buts de l'auteur. A ces composantes de la culpabilité, il faut ajouter les facteurs liés à l'auteur lui-même, à savoir les antécédents, la réputation, la situation personnelle (état de santé, âge, obligations familiales, situation professionnelle, risque de récidive, etc.), la vulnérabilité face à la peine, de même que le comportement après l'acte et au cours de la procédure pénale (<ref-ruling> consid. 6 p. 66 s. et les références citées). Le juge dispose d'un large pouvoir d'appréciation dans la fixation de la peine. Le Tribunal fédéral n'intervient que lorsque l'autorité cantonale a fixé une peine en dehors du cadre légal, si elle s'est fondée sur des critères étrangers à l'<ref-law>, si des éléments d'appréciation importants n'ont pas été pris en compte ou, enfin, si la peine prononcée est exagérément sévère ou clémente au point de constituer un abus du pouvoir d'appréciation (<ref-ruling> consid. 1.2 p. 319). L'exercice de ce contrôle suppose que le juge exprime, dans sa décision, les éléments essentiels relatifs à l'acte ou à l'auteur dont il tient compte, de manière à ce que l'on puisse constater que tous les aspects pertinents ont été pris en considération et comment ils ont été appréciés, que ce soit dans un sens aggravant ou atténuant (<ref-law>; <ref-ruling> consid. 1.2 p. 319). Le juge peut passer sous silence les éléments qui, sans abus du pouvoir d'appréciation, lui apparaissent non pertinents ou d'une importance mineure. La motivation doit justifier la peine prononcée, en permettant de suivre le raisonnement adopté. Un recours ne saurait toutefois être admis simplement pour améliorer ou compléter un considérant lorsque la décision rendue apparaît conforme au droit (<ref-ruling> consid. 1.2 p. 319; <ref-ruling> consid. 5.6 p. 61).
Selon l'<ref-law>, si, en raison d'un ou de plusieurs actes, l'auteur remplit les conditions de plusieurs peines de même genre, le juge le condamne à la peine de l'infraction la plus grave et l'augmente dans une juste proportion. Il ne peut toutefois excéder de plus de la moitié le maximum de la peine prévue pour cette infraction. Il est en outre lié par le maximum légal de chaque genre de peine. Lorsqu'il s'avère que les peines envisagées concrètement sont de même genre, l'<ref-law> impose au juge, dans un premier temps, de fixer la peine pour l'infraction abstraitement - d'après le cadre légal fixé pour chaque infraction à sanctionner - la plus grave, en tenant compte de tous les éléments pertinents, parmi lesquels les circonstances aggravantes ou atténuantes. Dans un second temps, il augmentera cette peine pour sanctionner chacune des autres infractions, en tenant là aussi compte de toutes les circonstances y relatives (<ref-ruling> consid. 1.1.2 p. 317; cf. <ref-ruling> consid. 2b p. 104; arrêt 6B_688/2014 du 22 décembre 2017 consid. 27.2.1; plus récemment: arrêt 6B_36/2019 du 2 juillet 2019 consid. 3.6.2).
Selon la jurisprudence, en cas de concours entre plusieurs infractions, dont une seule est passible d'une peine privative de liberté à vie, le prononcé d'une condamnation à vie ne peut pas se fonder sur le seul principe de l'aggravation de l'ancien <ref-law> et de l'<ref-law>. En effet, une telle augmentation de la peine frapperait plus durement l'auteur que si plusieurs peines de durée déterminée étaient cumulées; le prononcé d'une peine à vie ne sera possible que si l'une des infractions en cause justifie en soi une telle sanction (<ref-ruling> consid. 9.1 p. 105 s.). En revanche, il est admis qu'une condamnation à vie puisse résulter du seul effet de l'aggravation du concours lorsque, comme en l'espèce, l'auteur a commis plusieurs infractions passibles de la peine privative à vie (<ref-ruling> consid. 6.1.2 et les références citées).
3.2. Le recourant fait grief à la cour cantonale de pas avoir tenu compte de certains éléments qui lui étaient favorables dans la fixation de la peine, respectivement de ne pas leur avoir accordé un effet atténuant.
3.2.1. Dans la mesure où le recourant reproche à la cour cantonale de ne pas avoir tenu compte de la situation gravement conflictuelle dans laquelle se sont déroulés les faits ainsi que de l'état émotionnel dans lequel il se trouvait, il s'écarte des constatations de fait du jugement cantonal, qui résistent au grief d'arbitraire, comme cela a été admis au consid. 1 ci-dessus. Pour le surplus, la cour cantonale n'a pas manqué de prendre en considération le dépit dans lequel la découverte de la nouvelle relation de son ex-compagne avait plongé le recourant. De même, le recourant s'écarte de manière inadmissible de l'état de fait cantonal lorsqu'il fait grief à la cour cantonale d'avoir retenu une certaine préméditation ou encore d'avoir considéré, s'agissant de son comportement pendant la procédure pénale, qu'il n'avait pas toujours fait preuve d'une grande sincérité, que ce soit dans ses aveux ou en rapport avec les regrets exprimés. Son argumentation n'est donc pas recevable sur ces points.
3.2.2. La cour cantonale n'a pas justifié la quotité de la sanction infligée au recourant par sa dangerosité et l'on ne voit pas que son absence, qui est la norme, puisse, en elle-même, constituer un facteur atténuant. Le recourant ne peut, partant, rien déduire en sa faveur du risque de récidive qualifié ici de faible. Le fait que le mode d'exécution n'ait pas été particulièrement cruel ou perfide ne saurait non plus jouer un rôle atténuant.
3.2.3. C'est en vain que le recourant se prévaut de son comportement exemplaire en détention. En effet, un bon comportement en détention a un effet neutre sur la peine, puisqu'il correspond à ce que l'on doit pouvoir attendre d'un détenu (arrêts 6B_389/2020 du 24 juin 2020 consid. 3.3; 6B_938/2019 du 18 novembre 2019 consid. 3.3).
3.2.4. Lors de la fixation de la peine, le juge doit tenir compte du fait que certains délinquants sont plus durement touchés par l'exécution d'une peine privative de liberté. L'âge et le mauvais état de santé du délinquant font partie des éléments qui peuvent le rendre plus vulnérable face à la peine. La vulnérabilité face à la peine ne doit toutefois être retenue comme circonstance atténuante que si elle rend la sanction considérablement plus dure que pour la moyenne des autres condamnés (arrêt 6B_623/2014 du 5 janvier 2015 consid. 3.6.1), par exemple en présence de maladies graves, de psychoses claustrophobiques ou de sur-dimutité. Le recourant se prévaut de son mauvais état de santé (diabète et polyneuropathie, liés en bonne partie à sa consommation excessive d'alcool), que la cour cantonale a constaté, mais ne démontre pas en quoi ces troubles rendraient l'exécution de sa peine considérablement plus difficile pour lui que pour un autre condamné. Il ne peut donc rien en déduire à l'appui de son grief.
3.2.5. Le recourant soutient que la cour cantonale n'a pas suffisamment tenu compte, dans l'appréciation de la peine, qu'il avait lui-même avisé la police, ne s'était pas opposé à son arrestation et avait avoué les faits. Par ailleurs, elle a constaté que les liens entre le recourant et ses enfant semblaient solides et affectueux, ceux-ci allant régulièrement rendre visite à leur père en prison, mais elle n'en a tiré aucune conclusion à décharge.
La cour cantonale a dûment mentionné les éléments propres à l'auteur, en particulier sa situation familiale et son comportement après les faits. A l'issue de son analyse, elle a indiqué prendre en considération l'ensemble de ces éléments pour fixer la peine réprimant les infractions commises. Partant, le recourant ne démontre pas que la cour cantonale aurait omis de tenir compte, ou aurait insuffisamment pris en considération les éléments favorables à l'auteur, et cela même en prononçant la sanction la plus lourde du Code pénal, eu égard en particulier à l'extrême gravité des faits.
3.2.6. Au regard de ce qui précède, le grief par lequel le recourant discute l'appréciation de la cour cantonale des éléments objectifs et subjectifs pris en considération pour déterminer la quotité de la peine est infondé, dans la mesure de sa recevabilité.
3.3. Le recourant dénonce une violation de l'interdiction de la double prise en considération des mêmes éléments dans la fixation de la peine. En vue de décider que les infractions méritaient d'être sanctionnées par une peine privative de liberté à vie, la cour cantonale s'était référée aux faits qui lui avaient permis de qualifier les homicides d'assassinats, à savoir un mobile " égoïste car relevant avant tout de la jalousie et de la vengeance ", le recourant ayant aussi " agi pour, en quelque sorte, laver son honneur ".
L'interdiction de la double prise en considération signifie que les circonstances qui conduisent à élever ou à diminuer le cadre de la peine ne doivent pas être prises en considération une seconde fois comme éléments aggravants ou atténuants dans le cadre modifié de la peine, sans quoi l'auteur pâtirait ou bénéficierait deux fois de la même circonstance (<ref-ruling> consid. 5.4 p. 17 et les références citées). Toutefois, le juge peut apprécier l'importance que ces circonstances revêtent dans le cas particulier dans le cadre de l'<ref-law> (<ref-ruling> consid. 2b p. 71 s.; <ref-ruling> consid. 2b p. 347 s.). En effet, le juge fixe la peine en fonction de la gravité de la faute qui doit être évaluée au regard des circonstances de l'infraction et de la personne de l'auteur.
3.3.1. La cour cantonale a examiné en détail les motivations de l'auteur en passant en revue les déclarations du recourant à ce sujet ainsi que les analyses des psychiatres. Elle a retenu que, même si l'on prenait en considération un certain dépit du recourant quant à sa situation au moment des faits, il fallait retenir que sa motivation était égoïste, car relevant de la jalousie (due évidemment au fait que son ex-amie entretenait une nouvelle relation) et d'une forme de vengeance (causer du tort à ceux qui l'avaient offensé). La cour cantonale a observé que le recourant manifestait une tendance à diluer sa responsabilité, rejetant sur d'autres la faute de ses actes, et ne voulait pas voir qu'en fait, c'était lui qui avait mis fin à la vie commune avec sa compagne en 2014, lui qui disait à des tiers que sa relation avec elle se résumait à des repas et des courses en commun, lui qui avait annoncé à tous ses proches - le 3 août 2017 en début d'après-midi - la fin de leur relation et lui encore qui avait envoyé à son ex-compagne, le 4 août 2017 vers 08h00, un message lui disant que tout était fini. En ce qui concernait le comportement de B._ en relation avec son addiction à l'alcool, qui aurait selon lui provoqué sa colère, le recourant perdait de vue qu'il abusait lui-même des boissons alcoolisées et que son propre comportement envers elle n'était pas au-dessus de tout reproche (à en juger par divers messages qu'il lui avait envoyés, dans lesquels il la traitait volontiers de " salope " et lui disait qu'elle était " nulle "). La cour cantonale a considéré que le recourant avait sans doute pu ressentir comme une blessure faite à son honneur le fait qu'il avait été l'un des derniers à être au courant de la nouvelle liaison de son ex-compagne et qu'il avait appris le soir du 3 août 2017 que même les enfants la connaissaient depuis un certain temps déjà. On pouvait donc admettre qu'il avait aussi agi pour, en quelque sorte, laver son honneur (jugement attaqué, consid. 8. j., p. 82 à 85).
3.3.2. En analysant de manière détaillée les motivations de l'auteur, la cour cantonale a déterminé le degré d'égoïsme dans le mobile du recourant au regard de l'ensemble des circonstances. Elle a ainsi tenu compte de la mesure concrète de la faute commise. Dans ces conditions, la cour cantonale n'a pas violé l'interdiction de la double prise en considération.
3.4. Le recourant soutient que la peine hypothétique retenue par la cour cantonale pour une seule infraction, par 16 ans de privation de liberté, est disproportionnée au regard de sa culpabilité. Il compare le cas d'espèce avec une affaire jugée par le Tribunal criminel de Genève à l'issue de laquelle l'auteur avait écopé d'une peine privative de liberté de 13 ans pour l'assassinat du nouveau petit ami de son ex-compagne. Par ailleurs, le recourant fait grief à la cour cantonale d'avoir appliqué le principe d'aggravation de manière erronée en retenant une peine (hypothétique) de 26 ans pour les deux infractions. Il soutient par ailleurs que la peine privative de liberté à vie doit être réservée à des crimes odieux, d'une brutalité sauvage, pour lesquels des souffrances d'une grave intensité ont été infligées aux victimes, et ne peut résulter du seul fait que l'auteur a commis deux assassinats.
3.4.1. L'autorité précédente a estimé que si le recourant n'avait, dans les mêmes circonstances, tué que l'une des deux victimes, épargnant l'autre, c'est une peine privative de liberté d'au moins 16 ans qui aurait été prononcée. En faisant abstraction de l'<ref-law>, qui prévoit que la peine privative de liberté est de 20 ans au plus ou à vie si la loi le prévoit, la peine justifiée, compte tenu de l'aggravation liée au concours d'infractions, serait de 26 ans. Dans la mesure où la peine hypothétique n'autoriserait pas une libération conditionnelle avant 17 ans, il était raisonnable de prononcer une peine privative de liberté à vie, qui permet une libération conditionnelle après 15 ans. La cour cantonale a encore précisé qu' " envisagé séparément, aucun des deux assassinats ne justifierait une telle peine " (jugement attaqué, consid. 8.z., p. 94 s.).
3.4.2. Étant rappelé que toute comparaison d'une peine d'espèce avec celle prononcée dans d'autres cas concrets est d'emblée délicate, compte tenu des nombreux paramètres qui interviennent dans la fixation de la peine (<ref-ruling> consid. 6.3.2 p. 69), le recourant ne démontre pas en quoi les circonstances concrètes de son cas, y compris les circonstances personnelles, seraient similaires à l'affaire qu'il cite, laquelle n'a du reste, comme on le comprend, pas été portée devant le Tribunal fédéral. Il n'établit pas en quoi la peine hypothétique de 16 ans procéderait d'un abus du pouvoir d'appréciation de la cour cantonale, compte tenu également du rejet des arguments développés supra (consid. 3.2).
3.4.3. Selon ce qui précède, la cour cantonale a fixé une peine hypothétique pour l'une des infractions, dans la mesure où il n'était pas possible d'identifier la plus grave des deux, avant d'ajouter une peine complémentaire pour tenir compte de la seconde infraction. Attendu que l'effet du concours conduisait à une quotité supérieure à vingt ans, la cour cantonale a prononcé la peine correspondant au plafond du cadre légal des infractions reprochées, soit une peine privative de liberté à vie. En procédant de la sorte, la cour cantonale n'a pas violé le principe d'aggravation (consid. 3.1 dernier paragraphe supra).
En outre, étant admis qu'une condamnation à vie puisse résulter du seul effet de l'aggravation du concours lorsque, comme en l'espèce, l'auteur a commis plusieurs infractions passibles de la peine privative de liberté à vie (<ref-ruling> consid. 6.1.2 p. 67 s.), il était possible, comme l'a fait la cour cantonale, d'infliger une telle peine alors que chaque infraction prise séparément ne présentait pas une gravité correspondant à cette sanction. Quoi qu'en pense le recourant, si les crimes n'ont pas été commis avec une brutalité ou une cruauté particulière, il n'en demeure pas moins que d'autres circonstances, mises en exergue ci-dessus, les rendent particulièrement choquants. En définitive, l'on se trouve ici en présence de deux assassinats, soit deux homicides commis avec une absence particulière de scrupules, pour chacun desquels la peine-menace va de dix ans de privation de liberté jusqu'à la peine à vie. Compte tenu de la culpabilité " moyenne à grave " du recourant - qui tient compte de sa diminution légère de responsabilité due à sa consommation d'alcool -, le prononcé d'une peine privative de liberté à vie pour sanctionner ces infractions ne procède ni d'un abus, ni d'un excès du très large pouvoir d'appréciation dont disposait la cour cantonale. Cela conduit au rejet du grief.
4.
Dans ses conclusions, le recourant demande qu'il soit dit que les indemnités dues à son conseil d'office et à celui de C._ et D._ ne sont pas remboursables et que l'indemnité au sens de l'<ref-law> pour la procédure d'appel soit refusée à K._ et L._, les enfants de E._. Ce qui précède conduit au rejet du recours sur ces points.
5.
Il s'ensuit que le recours doit être rejeté dans la mesure où il est recevable. Comme il était dépourvu de chance de succès, la demande d'assistance judiciaire doit être rejetée (<ref-law>). Le recourant, qui succombe, supportera les frais judiciaires (<ref-law>), dont le montant sera fixé en tenant compte de sa situation financière, laquelle n'apparaît pas favorable.

Par ces motifs, le Tribunal fédéral prononce :
1.
Le recours est rejeté dans la mesure où il est recevable.
2.
La demande d'assistance judiciaire est rejetée.
3.
Les frais judiciaires, arrêtés à 1'200 fr., sont mis à la charge du recourant.
4.
Le présent arrêt est communiqué aux parties et à la Cour pénale du Tribunal cantonal du canton de Neuchâtel.
Lausanne, le 4 mars 2021
Au nom de la Cour de droit pénal
du Tribunal fédéral suisse
La Présidente : Jacquemoud-Rossari
La Greffière : Musy