Q:

Is there any difference between hjkl and arrow keys?

Besides their position and hand movement required, is there any difference between using hjkl and the arrow keys? Can I use either one interchangeably and expect the same behavior? The only difference I can think of is that the arrow keys work in insert mode so you save strokes if you need to move 1-2 chars.
Note: I use an alternate keyboard layout and the hjkl keys are mixed up. I have a programmable layer on my keyboard and wondering whether it should have hjkl or the arrow keys. I'd prefer to use the arrow keys since they can be used in all programs.

A:

Arrow keys vs. h,j,k,l
You are correct in your assessment. They are equivalent, except that the arrow keys also work in insert mode.
(The same is true in a couple of other places, for instance you can use left/right arrows to move around within a command or search/replace you are typing, but you cannot use hjkl for movement in those cases.)
There is one other difference, I suppose - since they are separate keys, they can be mapped to separate things. So if you remap h for instance,  it would not affect the function of <Left>, and vice-versa.
Other keys
You asked about some other keys in the comments.

X - Bkspc, x - Delete, 0 - Home, $ - End, R - Insert

Some are equivalent, but not all of these.
x, X, backspace, delete
x and <Del> are equivalent, and even share the exact same node in the help text. Both of them delete characters under and after the cursor.
X and <BS> both delete characters to the left of the cursor. But in different modes: X does so in normal mode, and <BS> does so in insert mode. If you are in normal mode, <BS> just goes backward by one character without changing the text (so it behaves like h).
0, $, Home, End
These are interchangeable.
R, Insert
These do not do the same thing. <Insert> works like i, and inserts. R enters insert mode, but in a special way where it overwrites characters rather than inserting before them.

