'error: device not found' while connected to device through adb shell
You must run adb on your host PC instead of your device. The adb is a host program that operates on another device. To pull data from your phone, make sure you run adb like this:  

C:\Windows\system32>adb pull something yourPC  

If you run adb shell then you're entering your phone, where you are actually running /system/bin/adb instead of adb.exe on your Windows PC. Your phone is a client device, not the host device.
If you want to pull a file from a root-required place, you must first copy it to somewhere else before pulling it out. Like this  

C:\Windows\system32>adb shell
shell@SC-04E:/ $ su
root@SC-04E:/ # cp /path/to/somefile /sdcard/somefile
root@SC-04E:/ # exit
shell@SC-04E:/ $ exit
C:\Windows\system32>adb pull /sdcard/somefile D:\somefile  

For your question about why adb returns nothing, you can try this to find out.
Plug in another adb-enabled phone using an OTG cable on your primary phone (in your case, Galaxy S4) and get a terminal emulator. Type in adb devices and run on your primary phone you can see it like this.  

root@SC-04E:/ # adb devices
List of devices attached
12345678        device