Again, files must have file extensions. URLs need not.
This code doesn't change URLs or filenames, it maps or "points" an incoming URL-path request from a client (e.g. a browser) to a different-from-usual filepath inside the server.
RewriteRule ^([a-z0-9]+)$ /$1.html [L]
translates to "When the client requests a URL-path composed of one or more letters and/or numbers, prepend the value of DocumentRoot and a slash, append ".html", and serve the file at the resulting filesystem location."
If that's what you want, then the code is fine.
The second variant differs only in that the pattern recognizes "one or more characters not equal to a period." Note that using this pattern will mean that you can never use a period in a (sub)directory-path. This may be of no concern to you at present, but consider this in light of your long-term plans.
Note also that it is not necessary to escape periods within alternate groups, so "[^.]" will do just fine instead of "[^\.]".
Jim