Why I get an error when including sdl image?

I think the meaning is a bit different, though if I understand Source file inclusion - cppreference.com correctly, most of it is implementation-defined anyway.

Usually #include <header.h> searches the compiler/toolchain standard paths (as you said) and the directories passed to the compiler with -I (see gcc docs) - or, in case of Visual C++, /I (see MSVC docs).
Or, as cppreference.com (for C) puts it (emphasis mine):

(1) Searches for the file in implementation-defined manner. The intent of this syntax is to search for the files under control of the implementation. Typical implementations search only standard include directories. The standard C++ library and the standard C library are implicitly included in these standard include directories. The standard include directories usually can be controlled by the user through compiler options.

#include "header.h" first tries searching paths relative to the current source file (meaning, in the same directory, or if you use #include "../bla/header.h" it looks in the bla/ subdirectory of the parent-directory of the current source file).
If it can’t find the header there, it will search the same paths as #include <header.h>, i.e. the ones specified with -I or /I and system/compiler default directories.
Or, in the words of cppreference:

(2) Searches for the file in implementation-defined manner. The intent of this syntax is to search for the files that are not controlled by the implementation. Typical implementations first search the directory where the current file resides and, only if the file is not found, search the standard include directories as with (1).

So including SDL.h with <> should be totally fine, unless for some reason it’s in a directory that’s relative to the current source file (and not in the compiler search directories, including the ones specified with -I)