.htm are absolutely identical.
In terms of apps there is no difference if you are creating
But you need to consider your requirements carefully. For example, if you need to host on your page some OOB web parts, for example XSLTListViewWebPart:
<WebPartPages:WebPartZone runat="server" FrameType="TitleBarOnly" ID="full" Title="loc:full">
<WebPartPages:XsltListViewWebPart runat="server" ListUrl="Lists/Faq" IsIncluded="True"
NoDefaultStyle="TRUE" Title="XsltListView web part" PageType="PAGE_NORMALVIEW"
this is possible only in
aspx page. If you need to put into your page any other SharePoint controls - you need
From the other side,
aspx adds some html and js overhead in markup. If all above is not your requirement, and you are building modern angular (react) SPA application, for simplicity you can go ahead with
From my perspective, it's safer and better to always use
.aspx, because in future you may have a requirement to include some OOB controls into your existing page. In that case with '.html' you will be stucked. If you are building react\angular, just put markup inside
<asp:Content ContentPlaceHolderID="PlaceHolderMain" runat="server">.