I have the address of the first byte of an array,
the address of the array +4 would get me the
address of the fifth byte,
the address of the array +0 would get me the
address of the first byte.

For example:

arr db 1,2,3,4,5
mov bx,offset arr
add bx,4
mov al,[bx]

Is this correct?????????

Yep!

Other methods of access

arr db 1,2,3,4,5

mov bx,offset arradd
mov al,[bx+4]

mov bx,4
mov al,arradd[bx]

If you were trying to access 16-bit elements

mov bx,4
shl bx,1
mov ax,arradd[bx]

or
mov bx,4
shl bx,1
add bx,arradd
mov ax,[bx]
or
mov bx,4
mov ax,arradd[bx*2]  ;; using scalar

and a few others!