&& vs ST_Intersects performance
Background, functionality and performance

&amp;&amp; opperator

&amp;&amp; is bounding-box overlaps. All operators call functions in PostgreSQL: you can see this \doS+ &amp;&amp; in this case &amp;&amp; literally calls the PostGIS function geometry_overlaps. The only catch here is that &amp;&amp; will make use of an index, from the docs


  In general, you will want to use the "intersects operator" (&amp;&amp;) which tests whether the bounding boxes of features intersect. The reason the &amp;&amp; operator is useful is because if a spatial index is available to speed up the test, the &amp;&amp; operator will make use of this. This can make queries much much faster.


You can see in the definition of geometry_overlaps that it calls an internal C function gserialized_overlaps_2d.  The function gserialized_overlaps_2d uses 4 comparisons to determine whether or not there is an overlap in the bounding box. That's 
not usually all that useful except for adding selectivity, so you don't normally want it.

That means this isn't a performance question, &amp;&amp; just doesn't do much. However what &amp;&amp; does do can make use of a GIST index.

ST_Intersects

ST_Intersects from the docs,


  This function call will automatically include a bounding box comparison that will make use of any indexes that are available on the geometries.


The reason why is simple, only the bounding box uses the index. That means it'll do a &amp;&amp; AND someting else. And you can see that with \dfS+ st_intersects

SELECT $1 &amp;&amp; $2 AND _ST_Intersects($1,$2);


So the extra bit it does is call either geos_intersects or sfcgal_intersects intersects depending on your chosen back end. in the best case, that you get geos_intersects, you can see what that does here.

In essence, it is telling you if any point intersects without making any assumptions (other than floating point math).

Mixed SRIDs

As a last note, it maybe be worth noting that these two operations handle mixed SRIDs differnetly.

Your questions


  Question 1 is if &amp;&amp; is significantly faster than ST_Intersects when using with ST_MakeEnvelope (a rectangular boundary), when finding points inside a rectangular bounding box.


Yes, it's faster -- significantly. It does less. It doesn't find "points" inside a rectangular bounding box unless one side is a simple point. Other than that, it finds bounding-box overlaps which are subject to false positives if all points reside outside of the bounding box.


  Question 2 is Also am I understanding correctly that when checking points inside a rectangular boundary &amp;&amp; does exactly same thing as ST_Intersects?


No. It should be clear why now.