HTMLCollection: is an interface that holds a collection of objects that are like arrays that offer methods and properties of a selecting list. This collection in the HTML DOM is considered live, so it automatically will update when the document is changed. HTML Collection.length is an instance property that will return the numbers of items in a selected collection. The HTML Collection has instance methods such as HTMLCollection.item() which will return a specific node at the given zero-based index into the list. HTMLCollection.namedItem() is another instance method that will return a specific node of an ID name that will match the string specified by name. Inside javascript, HTMLCollection exposes members directly as properties the name and index.
NodeList: These are objects that carry a collection of nodes that is usually returned by properties like Node.childNodes and methods like document.querySelectorAll() Since NodeList don't act as arrays do, it is still possible to loop through it with a forEach() but it can be converted to a real Array by using Array.from() They're are two typed of NodeList and that being live and static. By live, it is meant as that it changes the DOM automatically to update the collection. On the other hand, static is meant as changes in the DOM do not affect the content in the collection, for example document.querySelectorAll() method will return a static NodeList. NodeList.lengthis a ready only of the number of nodes in the list. NodeList has a variety of methods such as NodeList.item which wil return an item in the list by the index. NodeList.entries is a method that will return an iterator, which allows the code to flow through the key and value pairs that are contained in the collection. NodeList.forEach() will execute a provided function per NodeList element, then passing it as an argument into the function. Along with other methods that NodeList contains.
Differences and/or similarities: A similarity these two share is that you are able to loop through them both and they both have collections (document elements and document nodes) that can be extracted from a document. However, the differences between them is that the HTMLCollection is only a collection of document elements using the documentElement property and NodeList is only accessed by the index number of an element. The NodeList is the collection of nodes such as element nodes, attribute nodes and text nodes.
Overall, these API's are both useful when manipulating the DOM, they both have purposes of adding to or extracting certain values from the HTML document. Each with their own significant instance properties and methods you are able to do what you need to with the contents in the HTML