I'm not sure you can rely on ID, because the ID is not assigned until AFTER you first submit it to the library. However, you can't worry about duplication, because the ID field of every SharePoint list is a unique identifier. The numbers are sequential and are never duplicated.
Yes, you can concatenate any field with anything else, but again, ID will not be available until AFTER the form has been submitted once. Also, there is no filename until you have submitted it, so neither of these are a good idea, imo. To use these, you would have to setup a rule on your submit button or submit action that first submits the form to the library without closing it, goes out and retrieves the ID and filename, then concatenates those two, then places that string into some other field, then re-submits the form again using the same filename, and then closes. Is that what you want to do? If you let me know what you'd like to accomplish, I might be able to give you a solution.
Here is the syntax logically:
concat(ID, Name)
Pretty simple. The reason they are underlined is because that's how they will look when you choose Insert Function > concat and then see "double click to insert field." When you double click to insert field, you will then go to your data connection that pulls the ID and filename from the library and choose those inside the concat parentheses separated by a comma.
My preference is to dynamically create the filename for the user without them having to use the Save function or the built-in submit function. I take their username and concatenate it with the date/time stamp using now(). The syntax is concat(userName(),"-",now()). I set a field named "filename" to th at expression and then use that filename in my SharePoint Library Submit data connection so that it will never change and is easy to reference.